2010-05-07 69 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