我有这个代码,但是当我运行它时,“typeof object [key]”显示为数字,但“typeof object.key”显示为undefined。这种奇怪行为的原因是什么?
var object = {a:3,b:4};
for (var key in object){
console.log(typeof object[key], typeof object.key);
}
答案 0 :(得分:4)
在你的循环中,变量key
将评估为“a”,然后评估为“b”。
在括号表示法中,key
是该局部变量的名称,并进行了评估。
因此,当您评估object[key]
时,您将获得object["a"]
,然后object["b"]
。
但是,点表示法使用名称(“键”)本身,而不是key
的值。所以当你写object.key
时,你就会找到名为“key”的属性。而object
没有,所以它是undefined
。