stone
stone

Reputation: 841

Single quotes in JavaScript object literal

I'm looking at the Google Maps API tutorial, and I see this:

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

Why is modules wrapped in single quotes?

Upvotes: 5

Views: 4205

Answers (4)

Mathias Bynens
Mathias Bynens

Reputation: 149534

The currently accepted answer is incorrect — reserved words are valid identifier names, so they’re allowed as unquoted property names in JavaScript.

From Unquoted property names / object keys in JavaScript, my write-up on the subject:

Quotes can only be omitted if the property name is a numeric literal or a valid identifier name.

[…]

Bracket notation can safely be used for all property names.

[…]

Dot notation can only be used when the property name is a valid identifier name.

I also made a tool that will tell you if any given property name can be used without quotes and/or with dot notation. Try it at mothereff.in/js-properties.

Screenshot

Upvotes: 1

Marcel Korpel
Marcel Korpel

Reputation: 21763

In fact, in most JSON implementations (because it's actually a JSON string), like jQuery's getJSON, it's obligatory to put all strings, whether they represent values or properties, within double-quotes.

Upvotes: 1

Delan Azabani
Delan Azabani

Reputation: 81384

It's not required unless:

  1. The property is named the same as a keyword/reserved
  2. The property has special chars
  3. The object is intended to be used as JSON

Upvotes: 0

Daniel Vassallo
Daniel Vassallo

Reputation: 344301

It's a good practice to wrap keys in quotes, even though not strictly required, in order to avoid the possibility of conflicts with JavaScript reserved words.

Imagine if you had class instead of modules - class happens to be a reserved word in JavaScript, even though it is not actually used in the current specification.

Upvotes: 8

Related Questions