不带引号的JavaScript对象文字键的规则?

jte*_*ace 13 javascript

在JavaScript中,您可以像这样定义一个对象:

var d = {1: 'test'};
Run Code Online (Sandbox Code Playgroud)

我可以设置一个带负数索引的键,如下所示:

d[-1] = 'test2';
Run Code Online (Sandbox Code Playgroud)

但如果我尝试在文字初始化中使用负数,我会收到一个错误:

var d = {1: 'test', -1: 'test2'};
Uncaught SyntaxError: Unexpected token -
Run Code Online (Sandbox Code Playgroud)

为什么是这样?为什么我不能使用文字负数作为对象的键?是否有一种解决方法允许我将其初始化为文字.我知道我可以使用字符串,但我想使用整数.

Mat*_*ens 17

JavaScript中的Unquoted属性名称/对象键,我对该主题的描述:

如果属性名称是数字文字或有效标识符名称,则只能省略引号.

[...]

括号表示法可以安全地用于所有属性名称.

[...]

只有当属性名称是有效的标识符名称时,才能使用点表示法.

-1它不是一个数字文字,它是一个一元运算-符后跟一个数字文字(1).

我还创建了一个工具,告诉您是否可以使用任何给定的属性名称而不使用引号和/或带点符号.在mothereff.in/js-properties试试吧.

截图