在Chrome中,以下JavaScript代码引发意外的令牌错误:
var somearray = ["foo","bar"];
var someassoc = {somearray[0]:somearray[1]};
抛出的错误:
Uncaught SyntaxError: Unexpected token [
相反,我希望它应该创建一个键为Somearray[0]
的对象,并且该键的项为Somearray[1]
。
那么,为什么会这样?意外标记通常意味着括号放错了地方等,但这里不是这样。
在JavaScript中,当声明对象时,键名应该始终是一个简单的字符串,例如:
var object = {'key': 'Hello World'};
但是,如果要使用动态的键名,如somearray[0],则只需将someassoc声明为对象:
var someassoc = {};
然后,通过以下操作设置键值组合:
someassoc.key = 'Hello World';
或
someassoc['key'] = 'Hello World';
在您的情况下将是:
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]};
本标准的相关部分:
简而言之:密钥必须是有效的标识符。
问题内容: 这是我的组件代码的片段: 但是,当我运行此代码时,在出现意外的令牌错误。为什么会发生这种情况,我该如何解决? 问题答案: 您必须将方法调用包装在JSX元素中,否则Babel不会将return语句识别为JSX或在这种情况下为内联JSX表达式。它不会将您的代码从JSX转换为纯JavaScript,因此会出现错误。实际上,它被解释为 对象文字 ,而不是您期望的内联JSX表达式: 解决方案是将
问题内容: 我在解析简单的JSON字符串时遇到问题。我已经在JSONLint上检查了它们,它表明它们是有效的。但是当我尝试使用jQuery替代方法解析它们时,出现了以下错误: 注意:我正在使用PHP 对字符串进行编码。 问题答案: 您的数据已经是一个对象。无需解析。javascript解释器已经为您解析了它。
问题内容: // if the box is outside the window, move it to the end function checkEdge() { var windowsLeftEdge = $(‘#window’).position().left; 我在上面提到的行上收到了UncaughtSyntaxError:意外的令牌ILLEGAL。它仅在GoogleChrome和Sa
我想制作这个 我下面的代码失败了,得到预期的令牌了吗?
问题内容: 我可能会缺少装载机吗?我以为我们应该能够在组件主体中使用这些ES6函数,而不必执行语法reactdocs 我的.babelrc具有以下内容: 我正在使用js / jsx文档 问题答案: 您需要使用才能使用类字段,您可以像安装它 并将其用作插件 用于其余的传播语法,例如 根据 文档 : 提出了两个相关的建议:和 。 描述打算在类的实例上存在的属性(并且可以选择包括用于所述属性的初始化器表
问题内容: 更新:- 好像我必须提供返回XML的URL。这是-URL 解析xml时出现SAXParseException。我尝试解析的xml如下- 我用来解析此xml的代码如下- 我正在使用相同的代码来解析其他xml数据,并且可以正常工作。我无法理解此xml数据中的内容,这阻止了它正确地解析数据。我也在线检查了许多xml验证程序的xml。 我一定在这里想念一些明显的东西。 编辑:- 我正在尝试解析