When are quotations need?

Hello,
I’m on the “Record Collection” challenge of the Javascript course and I am having trouble understanding why the key “tracks” needs to be in quotations in the If statements. In previous challenges I was able to access the key of an object without it but this challenge fails if I don’t include it. Can someone please explain this or point me to a link that can help me understand when quotations are necessary?

Any help would be greatly appreciated.

  **Your code so far**

// Setup
var recordCollection = {
2548: {
  albumTitle: 'Slippery When Wet',
  artist: 'Bon Jovi',
  tracks: ['Let It Rock', 'You Give Love a Bad Name']
},
2468: {
  albumTitle: '1999',
  artist: 'Prince',
  tracks: ['1999', 'Little Red Corvette']
},
1245: {
  artist: 'Robert Palmer',
  tracks: []
},
5439: {
  albumTitle: 'ABBA Gold'
}
};

// Only change code below this line
function updateRecords(records, id, prop, value) {
if (prop !== 'tracks' && value !== "") {
  records[id][prop] = value;
} else if (prop === "tracks" && records[id].hasOwnProperty("tracks") === false) {
  records[id][prop] = [value];
} else if (prop === "tracks" && value !== "") {
  records[id][prop].push(value);
} else if (value === "") {
  delete records[id][prop];
}
return records;
}

updateRecords(recordCollection, 5439, 'artist', 'ABBA');
  **Your browser information:**

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36

Challenge: Record Collection

Link to the challenge:

Because prop is a string, and you’re comparing it to the string "tracks".

You can still access the tracks property on the record via records[id].tracks, in the case that prop === "tracks" then that would be the same as records[id][prop].

1 Like

So, prop needed to equal the actual string “tracks” and without the quotes it would be compared to the value of tracks instead of the word itself?

Right, if you wrote prop === tracks, then you’d be saying “compare the value of the variable named prop to the value of the variable named tracks”, but in this case tracks would be undefined, because a variable with that name doesn’t exist in the scope.

1 Like

that makes perfect sense. Thanks for the clarification.