0

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

很好<script> {foo:'bar'}</script>

4

2 回答 2

10

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

foo: 'bar'就像代码一样好,foo:标签也好,'bar'表达式也好。

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

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

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

或者:

<script> ({'foo':'bar'})</script>
于 2012-11-27T16:35:58.187 回答
0

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

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

于 2012-11-27T16:36:53.327 回答