在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]};
标准的相关部分:
12.2.6对象初始化器
12.2.6.3静态语义:包含
11.6.1标识符名称
简而言之:密钥必须是有效的标识符.