在对象中使用“undefined”作为键会导致使用“undefined”作为键。为什么?

4

就像这样,{'undefined': 'foo'}会被转换成{undefined: 'foo'}

在Chrome中:

Chrome Screenshot

在Firefox中:

Firefox Screenshot

在Safari中:

Safari Screenshot

为什么?我尝试了其他保留字(例如nulltrue),它们似乎也被转换了。


4
你误解了控制台机制的输出。它正在按照你认为应该的方式准确地工作。当属性名称没有必要时,控制台机制不会在其周围包含引号。 - Pointy
1
此外,与 truenull 不同,undefined 不是 保留字。 - Pointy
Pointy是正确的。您可以通过尝试使用例如var o = {'foo': 'bar'}来验证这一点! - sifriday
所有的键都是字符串。 - Ry-
@Pointy 很好知道。谢谢你的信息。 - html_programmer
显示剩余2条评论
1个回答

3

这与保留字无关。无论使用什么字符串作为键,对象键始终以此方式显示。这只是控制台展示时所解释/呈现的方式。

var o = {'cheese': 'foo'};
// Object {cheese: "foo"}

o.cheese; // "foo"
o['cheese']; // "foo"

引号在访问时是不必要的,因此已被删除。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接