使用 undefined 作為屬性鍵是否保證結果將是未定義的?
P粉504920992
P粉504920992 2024-01-16 23:42:26
0
1
498

在透過變數檢索物件屬性的情況下,即:

myObject[someField]

someField(它是一個字串)有可能是未定義(可能是未初始化的字串值的結果)。我的實驗表明,對於我能想到的所有類型的對象,結果都是未定義,即:

anyObject[undefined] === undefined

這是一種眾所周知的行為,我可以信賴嗎?似乎無法在相關文件中找到某些內容,我的替代方案是將上面的內容重寫為

someField ? myObject[someField] : undefined;

但如果能保證每當我們嘗試存取屬性 undefined 時都會回傳 undefined,那麼我真的更喜歡簡潔的方式。

P粉504920992
P粉504920992

全部回覆(1)
P粉340980243

不,存取 obj[undefined] 並不總是回傳 undefined。與用作屬性名稱的任何值一樣,undefined 將被強制轉換為字串(除非它是符號),因此它實際上會存取名為「undefined」的屬性。 obj[undefined] 等價於 obj["undefined"]obj.undefined。如果存在這樣的屬性,它將傳回屬性值,例如當 obj = {undefined: true};.

你確實應該寫

someField != null ? myObject[someField] : undefined;

如果 someField: 未定義 |字串

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板