【问题标题】:Uncaught SyntaxError: Unexpected token : [closed]未捕获的语法错误:意外的令牌:[关闭]
【发布时间】:2012-11-27 16:32:53
【问题描述】:

为什么 <script> {'foo':'bar'}</script> 导致 Uncaught SyntaxError: Unexpected token : at chrome

<script> {foo:'bar'}</script> 就好了。

【问题讨论】:

  • 有趣的是,当我在 Chrome 58 控制台中运行时,这两个对我来说都很好。

标签: javascript


【解决方案1】:

因为它不是一个对象字面量,它是一个代码块。括号内的内容不会被解析为键值对,而是被解析为代码。

foo: 'bar' 可以作为代码使用,foo: 是标签,'bar' 是表达式。

'foo': 不行,因为代码作为标签不能是字符串,它必须是标识符。

要使其成为对象字面量,您必须使其成为表达式,例如:

<script> var x = {'foo':'bar'}</script>

或:

<script> ({'foo':'bar'})</script>

【讨论】:

  • 谢谢!现在我明白了!
【解决方案2】:

请注意,这不是JSON,您需要使用双引号 (")。

当您将此对象文字直接放入&lt;script&gt; 元素时,它不会被解析为expression(它将是一个有效对象)。相反,大括号被解析为blockstatement,而foo: 被解析为label'foo' 将是无效标签,因此会出现语法错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    • 2011-04-07
    • 2016-06-11
    • 2014-05-09
    相关资源
    最近更新 更多