Javascript 将数组项用作对象中的键时出现意外的令牌错误

Javascript 将数组项用作对象中的键时出现意外的令牌错误,javascript,arrays,associative-array,Javascript,Arrays,Associative Array,在Chrome中,以下JavaScript代码引发意外的令牌错误: var somearray = ["foo","bar"]; var someassoc = {somearray[0]:somearray[1]}; 引发的错误为: Uncaught SyntaxError: Unexpected token [ 相反,我希望它应该为该键创建一个键为somearray[0]的对象和一个项为somearray[1] 那么,为什么会发生这种情况?意外标记通常意味着括号放错了地方等,但这里不是这

在Chrome中,以下JavaScript代码引发意外的令牌错误:

var somearray = ["foo","bar"];
var someassoc = {somearray[0]:somearray[1]};
引发的错误为:

Uncaught SyntaxError: Unexpected token [
相反,我希望它应该为该键创建一个键为
somearray[0]
的对象和一个项为
somearray[1]


那么,为什么会发生这种情况?
意外标记通常意味着括号放错了地方等,但这里不是这样。

JS对象文本的键必须是静态键,或者是包含在
[]
中的表达式(需要ES2015支持)

代码的问题是
somearray[0]
键无效

因此,如果您需要ES5方式,请将其重写为

var somearray = ["foo","bar"];
var someassoc = {};
someassoc[somearray[0]] = somearray[1];
对于ES2015,您使用

var somearray = ["foo","bar"];
var someassoc = { [somearray[0]]: somearray[1]};
本标准的相关部分:


简而言之:键必须是有效标识符。

JS对象文本的键必须是静态键,或者是包含在
[]
中的表达式(需要ES2015支持)

代码的问题是
somearray[0]
键无效

因此,如果您需要ES5方式,请将其重写为

var somearray = ["foo","bar"];
var someassoc = {};
someassoc[somearray[0]] = somearray[1];
对于ES2015,您使用

var somearray = ["foo","bar"];
var someassoc = { [somearray[0]]: somearray[1]};
本标准的相关部分:


简而言之:键必须是有效的标识符。

在JavaScript中,声明对象时,键名称应始终是一个简单的字符串,例如:

var object = {'key': 'Hello World'};
但是,如果要使用动态的键名,如somearray[0],则只需将someassoc声明为对象:

var someassoc = {};
然后,通过执行以下操作设置键值组合:

someassoc.key = 'Hello World';

在您的情况下,将是:

someassoc[somearray[0]] = somearray[1];

仅此而已:)

在JavaScript中,声明对象时,键名应始终为简单字符串,例如:

var object = {'key': 'Hello World'};
但是,如果要使用动态的键名,如somearray[0],则只需将someassoc声明为对象:

var someassoc = {};
然后,通过执行以下操作设置键值组合:

someassoc.key = 'Hello World';

在您的情况下,将是:

someassoc[somearray[0]] = somearray[1];
就这些:)