在for循环中引用对象属性的表示法

时间:2014-10-28 01:57:26

标签: javascript

我目前正在使用codeacademy.com上的javascript轨道。

目前的课程要求我这样做,这将打印出每个属性的价值:

var nyc = {
    fullName: "New York City",
    mayor: "Bill de Blasio",
    population: 8000000,
    boroughs: 5
};

// write a for-in loop to print the value of nyc's properties
for(var p in nyc){
    console.log(nyc[p]);
}

一切都非常直截了当。但我的问题是,当我在for循环中使用点符号时,为什么这不起作用?像这样:

for(var p in nyc){
    console.log(nyc.p);
}

它打印出单词' undefined'而不是打印出4个属性值。四次。 对我来说似乎不合逻辑,我也不能使用点符号访问该属性。如果这不是代码学课程的一些特点,那么有人可以向我解释这个吗?

1 个答案:

答案 0 :(得分:2)

因为nyc.p等同于nyc["p"],并且可能该对象没有p属性。

JavaScript中的

a.b相当于a["b"],只是语法糖。通过变量名查找属性的唯一方法是使用括号表示法,因为点表示法总是引用一个常量的硬编码属性名称。