JavaScript中undefined作为对象属性键,其行为如何解析?
- 内容介绍
- 文章标签
- 相关推荐
本文共计740个文字,预计阅读时间需要3分钟。
在+
? 行为本质:undefined 会被强制类型转换为字符串
根据 ECMAScript 规范,当使用方括号语法 obj[key] 访问属性时,若 key 不是 Symbol,则会通过 ToString() 抽象操作将其转为字符串。而 ToString(undefined) 的结果恒为 "undefined"。
这意味着以下三者完全等价:
obj[undefined] obj["undefined"] obj.undefined
⚠️ 因此,只要对象上存在名为 "undefined" 的自有或继承属性,obj[undefined] 就会返回该属性值,而非 undefined。
本文共计740个文字,预计阅读时间需要3分钟。
在+
? 行为本质:undefined 会被强制类型转换为字符串
根据 ECMAScript 规范,当使用方括号语法 obj[key] 访问属性时,若 key 不是 Symbol,则会通过 ToString() 抽象操作将其转为字符串。而 ToString(undefined) 的结果恒为 "undefined"。
这意味着以下三者完全等价:
obj[undefined] obj["undefined"] obj.undefined
⚠️ 因此,只要对象上存在名为 "undefined" 的自有或继承属性,obj[undefined] 就会返回该属性值,而非 undefined。

