是否可以将undefined用作Object属性名称?

hl0*_*37_ 3 javascript ecmascript-5 ecmascript-6

javascript是否允许这样做?

a = {undefined : 1}
console.log(a[undefined])
Run Code Online (Sandbox Code Playgroud)

[编辑]我想我有点被python的习惯弄糊涂了,但是我实际上是这样的:

a = {[undefined] : 1}
console.log(a[undefined])
Run Code Online (Sandbox Code Playgroud)
请注意,它的工作原理是相同的:undefined将其转换为字符串(就像您通过此synthax传递的任何值一样),最终定义了"undefined"prop

[/编辑]

如果是这样,是否所有浏览器都以相同的方式处理它,并且在标准中明确指定了它?

[编辑]

注意: 该问题与“未定义”变量略有不同,即使基本原因和答案相同,该变量也可以用作具有“未定义”属性名称的对象的键。我在一个上下文中问undefined“似乎是值undefined还是字符串"undefined"?”,而链接的问题清楚地表示"undefined"为道具名称,并询问与关键字的名称冲突。

...而且我认为它可以帮助其他习惯使用Python或其他语言的程序员使用类似json的object / dict / hash synthax

[/编辑]

Que*_*tin 8

javascript是否允许这样做?

是。

如果是这样,是否所有浏览器都一样处理

是。

标准中是否有明确规定?

没有。

这只是在字符串上下文中使用时undefined转换为"undefined"的结果:

console.log( ("" + undefined).toUpperCase() )
Run Code Online (Sandbox Code Playgroud)