首頁  >  問答  >  主體

使用 undefined 作為屬性鍵是否保證結果將是未定義的?

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

myObject[someField]

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

anyObject[undefined] === undefined

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

someField ? myObject[someField] : undefined;

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

P粉504920992P粉504920992276 天前465

全部回覆(1)我來回復

  • P粉340980243

    P粉3409802432024-01-17 12:46:19

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

    你確實應該寫

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

    如果 someField: 未定義 |字串

    回覆
    0
  • 取消回覆