JavaScript对象字面量中的单引号

5

我正在查看Google Maps API教程,看到以下内容:

<script type="text/javascript" 
        src="http://www.google.com/jsapi?autoload={'modules':[{name:'maps', version:3, other_params:'sensor=false'}]}"></script>

为什么模块要用单引号括起来?
4个回答

8

即使没有严格要求,将键用引号括起来是一个好的实践,以避免与JavaScript保留字冲突的可能性。

想象一下,如果你使用的是class而不是modules - 尽管在当前规范中并没有实际使用,但class恰好是JavaScript中的一个保留字。


3
如果你对Daniel的回复感到满意,你应该点击左边的绿色勾号接受它。 - kazanaki
@MathiasBynens:我并不是想说保留字无效作为标识符名称。只是通常认为用引号包装键(特别是为了与ES3向后兼容)是一个好习惯。 - Daniel Vassallo
@DanielVassallo 好的,要知道在ES5中不再是这种情况了。(此外,在ES3中保留的单词与ES5中的不同。) - Mathias Bynens

1
事实上,在大多数JSON实现中(因为它实际上是一个JSON字符串),比如jQuery的getJSON,必须将所有字符串,无论它们表示值还是属性,都放在双引号中。

4
在JSON中,使用“双引号”是正确的做法,因为这在JSON规范中是必需的。 - Boldewyn

1

目前被接受的答案是不正确的——保留字是有效的标识符名称,在JavaScript中允许不带引号的属性名。

JavaScript中未引用的属性名/对象键,这是我对这个主题的写作:

只有当属性名是数字文字或有效的标识符名称时,才可以省略引号。

[...]

括号表示法可以安全地用于所有属性名。

[...]

只有当属性名是有效的标识符名称时,才能使用点表示法。

我还制作了一个工具,可以告诉您任何给定的属性名是否可以在不带引号和/或带点表示法的情况下使用。 请在mothereff.in/js-properties尝试它。

Screenshot


0

除非:

  1. 属性与关键字/保留字同名
  2. 属性包含特殊字符
  3. 对象用于 JSON
否则不需要使用 required

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接