2010-05-07 64 views
4

我期待在谷歌地图API的教程,我看到:单引号对象常量

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

为什么modules包裹在单引号?

回答

7

它包在引号键,即使没有严格要求,以避免与JavaScript reserved words冲突的可能性一个很好的做法。

想象一下,如果您有class而不是modules - class碰巧是JavaScript中的保留字,即使它在当前规范中并未实际使用。

+0

谢谢。 。 。 。 。 – stone 2010-05-07 11:51:22

+3

@stone如果您对Daniel的回复感到满意,您应该点击左侧的绿色勾号接受它。 – kazanaki 2010-05-07 14:14:37

+0

@MathiasBynens:我不打算说保留的作品是无效的标识符名称。只有通常认为将键换成引号是一种很好的做法(特别是为了与ES3向后兼容)。 – 2012-03-05 21:48:43

1

事实上,在大多数JSON实现中(因为它实际上是一个JSON字符串),就像jQuery的getJSON一样,必须在双引号内放置所有字符串,不管它们是值还是属性。

+4

“双引号”是JSON的正确方式,因为它们在JSON规范中是必需的。 – Boldewyn 2010-05-08 06:52:41

+0

@Boldewyn:谢谢,我编辑了我的答案。 – 2010-05-08 09:11:01

0

它不是需要除非:

  1. 酒店被命名为同一个关键字/保留
  2. 财产有特殊字符
  3. 目的旨在作为JSON
1

The currently accepted answer是不正确 - 保留字是有效的标识符名称,因此他们允许作为在Java中不带引号的属性名称脚本。

Unquoted property names/object keys in JavaScript,关于这个问题我写了:如果属性名称是数字文字或a valid identifier name

行情只能被省略。

[...]

括号符号可以安全地用于所有属性名称。

[...]

圆点符号可以被当属性名称是有效的标识符名称使用。

我也做了一个工具,它会告诉你,如果可以不带引号和/或点符号可以使用任何给定的属性名称。尝试在mothereff.in/js-properties

Screenshot