使用数组项作为对象中的键时出现意外的令牌错误
Unexpected Token Error when using array items as keys in an object
在 Chrome 中,以下 JavaScript 代码会引发意外令牌错误:
var somearray = ["foo","bar"];
var someassoc = {somearray[0]:somearray[1]};
抛出的错误:
Uncaught SyntaxError: Unexpected token [
相反,我希望它应该使用 somearray[0]
键和该键的 somearray[1]
项创建一个对象。
那么,为什么会这样? Unexpected Token
通常意味着括号在某处放错了位置等,但这里不是这种情况。
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 = {};
然后,设置一个key-value组合,方法是:
someassoc.key = 'Hello World';
或
someassoc['key'] = 'Hello World';
你的情况是:
someassoc[somearray[0]] = somearray[1];
就这些了:)
在 Chrome 中,以下 JavaScript 代码会引发意外令牌错误:
var somearray = ["foo","bar"];
var someassoc = {somearray[0]:somearray[1]};
抛出的错误:
Uncaught SyntaxError: Unexpected token [
相反,我希望它应该使用 somearray[0]
键和该键的 somearray[1]
项创建一个对象。
那么,为什么会这样? Unexpected Token
通常意味着括号在某处放错了位置等,但这里不是这种情况。
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 = {};
然后,设置一个key-value组合,方法是:
someassoc.key = 'Hello World';
或
someassoc['key'] = 'Hello World';
你的情况是:
someassoc[somearray[0]] = somearray[1];
就这些了:)