JavaScript JavaScript Loops, Arrays and Objects Tracking Data Using Objects Accessing All of the Properties in an Object

Kirblue ~
Kirblue ~
4,656 Points

I don't think this is working...

On here, I've used the same code as the teacher in the video to access all the property names. I don't know why this isn't working, but if something's wrong, please tell me :)

script.js
var shanghai = {
  population: 14.35e6,
  longitude: '31.2000 N',
  latitude: '121.5000 E',
  country: 'CHN'
};

for (prop in shanghai) {
  console.log(prop);
}
index.html
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JavaScript Objects</title>
</head>
<body>
<script src="script.js"></script>
</body>
</html>
Kirblue ~
Kirblue ~
4,656 Points

Also, this is what comes up: Bummer: There was an error with your code: ReferenceError: Strict mode forbids implicit creation of global property 'prop'

1 Answer

Antony .
Antony .
2,602 Points

The solution to your issue is to assign the keyword const to props, but I also suggest you to read this Medium post.

Upon deeper inspection of these types of for loops, it seems that they create a new block scope with each iteration. That would mean that each new index is actually a new variable within a new scope & our constant is never reassigned.

for (const prop in shanghai) {
  console.log(prop);
}