为什么for in循环里访问对象的属性是undifined?

var nyc = {
    fullName: "New York City",
    mayor: "Bill de Blasio",
    population: 8000000,
    boroughs: 5
};  
for(var property in nyc) {
    console.log(nyc.property);
    }
//控制台  不应该是属性的值么?
undefined
undefined
undefined
undefined
阅读 3.2k
3 个回答

for..in循环里,取值应该这样写,nyc[property]
因为property是变量,所以要用中括号,而不是.取值。
你nyc.property取的是nyc对象中,键为property的值,因为不存在,所以打印出undefined

楼上的答案是正确的。
对象是key:value的集合,其中key固定均为String类型。尝试一下在控制台输入以下代码就懂了

var nyc = {

    fullName: "New York City",
    mayor: "Bill de Blasio",
    population: 8000000,
    boroughs: 5
};
for(var property in nyc) {
    console.log(typeof property); // string, string, string, string
}
for(var property in nyc) {
    console.log(typeof nyc[property]); // string, string, number, number
}

for-in是将对象中的key当作一个变量输出出来

var nyc = {

fullName: "New York City",
mayor: "Bill de Blasio",
population: 8000000,
boroughs: 5

};
for (var property in nyc) {

console.log(nyc[property]);//应该是这样写 property是属性名  动态的,所以需要用[]

}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题