我目前正在使用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个属性值。四次。 对我来说似乎不合逻辑,我也不能使用点符号访问该属性。如果这不是代码学课程的一些特点,那么有人可以向我解释这个吗?
答案 0 :(得分:2)
因为nyc.p
等同于nyc["p"]
,并且可能该对象没有p
属性。
a.b
相当于a["b"]
,只是语法糖。通过变量名查找属性的唯一方法是使用括号表示法,因为点表示法总是引用一个常量的硬编码属性名称。