我想在[]之間的所有值轉換爲字符串,爲什麼不undefined
轉換爲"undefined"
?爲什麼不在javascript中使用[undefined]?
var a={};
a[undefined];
Object.keys(a).length===0
我想在[]之間的所有值轉換爲字符串,爲什麼不undefined
轉換爲"undefined"
?爲什麼不在javascript中使用[undefined]?
var a={};
a[undefined];
Object.keys(a).length===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;
哦!謝謝,我實際上認爲我在一本他們讀過的書中讀到過,我必須檢查它。我,爲什麼你的第二個例子工程 –
第二個例子工程,因爲要分配'undefined'對象的關鍵''undefined'的了'值很困惑。 'undefined'是一個在JavaScript中分配的有效值。沒有(即沒有分配)不是一個有效的值。 – Adam
哦,我的壞!我以爲我分配一個值,我最初試圖將其與數組並沒有工作,所以我就給他與對象的示例和搞砸了。但是現在我意識到未定義的屬性沒有顯示在控制檯中,因爲它是數組。反正謝謝! –
我想你基本上已經找到了一個邊緣案例。
如果我有一個未定義的變量a
,那麼調用myObject[a]
也應該返回undefined
,就像引用一個不存在的對象屬性一樣。未定義的硬編碼可能等同於使用未定義變量的解釋器。
你不修改對象;你是如何期待別的? –