我似乎无法定义类似的东西:
var a = {-1: 'Apple', -2: 'Orange'}
Run Code Online (Sandbox Code Playgroud)
我的Safari抱怨一个syntax error near '-'.Parens也没有帮助,即{(-1): ...- 在这种情况下,Safari不喜欢开放式的paren.
如果我想要键只是整数而不是字符串,那么构造一个关联数组的正确方法是什么?
Ada*_*man 24
请参阅ECMAScript语言规范的第11.1.5节:您将看到PropertyName可能确实是NumericLiteral,但规范的第7.8.3节表明NumericLiteral可能不以减号开头.在您的示例中看起来像负面的"文字"实际上是由一元运算符和NumericLiterals组成的表达式.
但是,PropertyName可能不是表达式:它只能是标识符名称,数字文字或字符串文字,表明您可以写
{'-1': 'Apple', '-2': 'Orange'}
Run Code Online (Sandbox Code Playgroud)
感谢GetFree找到正确的解释!
Den*_*nis 19
只需将它们用引号括起来即可.您仍然可以使用数字访问:
var a = {"-1": 'Apple', "-2": 'Orange'}
a[-1]; // Apple;
Run Code Online (Sandbox Code Playgroud)
引用对我有用:
var a = {'-1': 'Apple', '-2': 'Orange'};
console.log(a[-1]);
Run Code Online (Sandbox Code Playgroud)