2015-10-04 102 views
-1

我有这个代码,但是当我运行这个时,“typeof object [key]”显示为数字,但是“typeof object.key”显示为undefined。这种奇怪行为的原因是什么?object [key]和Object.key在JavaScript中表现不同。为什么?

var object = {a:3,b:4}; 
for (var key in object){ 
    console.log(typeof object[key], typeof object.key); 
} 
+0

正确的等价是'object.key' ==='object [“key”]''。括号表示需要一个字符串。 – Touffy

+0

但为什么object.key显示为undefined? –

+0

,因为您尚未为其分配任何值。 var object = {a:3,b:4,key:???}; – Molda

回答

4

在您的循环中,变量key将评估为“a”,然后评估为“b”。

在括号内,key是该局部变量的名称并进行了评估。

因此,当您评估object[key]时,您将获得object["a"],然后object["b"]

但是,点符号使用名称(“键”)本身,而不是key的值。所以当你写object.key时,你正在寻找名为“key”的属性。而object没有一个,所以它是undefined

相关问题