在透過變數檢索物件屬性的情況下,即:
myObject[someField]
someField
(它是一個字串)有可能是未定義
(可能是未初始化的字串值的結果)。我的實驗表明,對於我能想到的所有類型的對象,結果都是未定義
,即:
anyObject[undefined] === undefined
這是一種眾所周知的行為,我可以信賴嗎?似乎無法在相關文件中找到某些內容,我的替代方案是將上面的內容重寫為
someField ? myObject[someField] : undefined;
但如果能保證每當我們嘗試存取屬性 undefined
時都會回傳 undefined
,那麼我真的更喜歡簡潔的方式。
不,存取
obj[undefined]
並不總是回傳undefined
。與用作屬性名稱的任何值一樣,undefined
將被強制轉換為字串(除非它是符號),因此它實際上會存取名為「undefined」的屬性。obj[undefined]
等價於obj["undefined"]
或obj.undefined
。如果存在這樣的屬性,它將傳回屬性值,例如當obj = {undefined: true};
.你確實應該寫
如果
someField: 未定義 |字串
。