2015-10-04 37 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

相關問題