当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《将数组项用作对象中的键时出现意外令牌错误》经验,为你挑选了1个好方法。

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

var somearray = ["foo","bar"];
var someassoc = {somearray[0]:somearray[1]};

抛出的错误:

Uncaught SyntaxError: Unexpected token [

相反,我希望它应该创建一个具有该键的键somearray[0]和一个项的对象somearray[1].

那么,为什么会这样呢?一个Unexpected Token通常意味着一个支架已经被放错地方等,但这里并非如此.



1> zerkms..:

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标识符名称

简而言之:密钥必须是有效的标识符.

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有