如何解决在循环中访问javascript对象的问题?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (50)

for..in循环中,

为什么当作为访问的属性的值o.i返回undefined但是o[i]返回正确的值?

代码片段供参考:

var object = {
   id:2,
   name:'axs',
   address:'colon street'
};

for(let property in object){
  console.log(object.property); // returns undefined
  console.log(object[property]); // returns property-value
}
提问于
用户回答回答于

因为点表示法视为property所用对象的属性。要将for-in循环中的“属性” 用作变量,需要使用方括号访问器。如果为对象提供“属性”属性,它将按预期工作:

var object = {
   id:2,
   name:'axs',
   address:'colon street',
   property:'residential'
};

for(let property in object){
  console.log(object.property); // returns 'residential'
  console.log(object[property]); // returns property-value
}
用户回答回答于

o.i将查找财产iObject,但是当你做o[i]它看起来对评估物业i可能是:nameid,等...在使用dot表示法获取属性时,不会对变量进行求值,而是认为正在尝试获取属性i本身。

扫码关注云+社区

领取腾讯云代金券