2014-07-22 69 views

回答

0

你假設[]之間的所有值轉換爲字符串不正確。

這就是說,你在做什麼工作,如果你真的分配任何東西到你的undefined鍵,但你不是。

var a = {}; 
a[undefined] = 1; 
Object.keys(a).length === 1; 

甚至

var a = {}; 
a[undefined] = undefined; 
Object.keys(a).length === 1; 

如果你不分配一個值在哈希的關鍵,關鍵是不能保留。

編輯

有意思的是這種語言是如何工作的。當你聲明一個變量沒有值,JS與undefined

var x; 
console.log(x); //undefined 

值初始化,但是當你試圖聲明一個對象上的一個鍵,而不將其分配給一個值,那麼它是不是一個值初始化的undefined;

var x = {}; 
x[1]; 
Object.keys(x).length === 0; 

而且,只是爲了好玩,它應該很容易從上面看到以下爲真:

var x; //initializes to undefined 
var y = {}; 
y[undefined] = x; 
Object.keys(y).length === 1; 
+0

哦!謝謝,我實際上認爲我在一本他們讀過的書中讀到過,我必須檢查它。我,爲什麼你的第二個例子工程 –

+0

第二個例子工程,因爲要分配'undefined'對象的關鍵''undefined'的了'值很困惑。 'undefined'是一個在JavaScript中分配的有效值。沒有(即沒有分配)不是一個有效的值。 – Adam

+0

哦,我的壞!我以爲我分配一個值,我最初試圖將其與數組並沒有工作,所以我就給他與對象的示例和搞砸了。但是現在我意識到未定義的屬性沒有顯示在控制檯中,因爲它是數組。反正謝謝! –

0

我想你基本上已經找到了一個邊緣案例。

如果我有一個未定義的變量a,那麼調用myObject[a]也應該返回undefined,就像引用一個不存在的對象屬性一樣。未定義的硬編碼可能等同於使用未定義變量的解釋器。

相關問題