未捕获的SyntaxError:意外的令牌:

时间:2012-11-27 16:32:54

标签: javascript

为什么<script> {'foo':'bar'}</script>导致未捕获的SyntaxError:意外的令牌:在chrome

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

2 个答案:

答案 0 :(得分:10)

因为它不是对象文字,所以它是一个代码块。括号内的内容未被解析为键值对,它被解析为代码。

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

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

要使它成为一个对象文字,你必须使它成为一个表达式,如:

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

或:

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

答案 1 :(得分:0)

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

当您将此对象文字直接放入<script>元素时,它不会被解析为expression(它将是一个有效的对象)。相反,大括号被解析为block statementfoo:被解析为label'foo'将是无效标签,因此语法错误。