Looping Through Objects/ for...in

In exercise " Looping Through Objects"iterating through objects with the for…in syntax I need more explanation, I have been confused.
this was the answer of exercise:
for (let crewMember in spaceship.crew) {
console.log(${crewMember}: ${spaceship.crew[crewMember].name})
for (let crewMember in spaceship.crew) {
console.log(${spaceship.crew[crewMember].name}: ${spaceship.crew[crewMember].degree})
My questions are:

  1. Why “crewMember” have been repeated frequently. What’s its job. Why we don’t write it directly: spaceship.crew.name
  2. Why it sometimes in [ ] and sometimes in { }.
  3. Why we use $ here.