2012-02-08 4 views
7

Допустим, у меня есть следующий объект:Javascript свойство объекта цитирует

var VariableName = { 
    firstProperty: 1, 
    secondProperty: 2 
} 

Должен ли я, чтобы обернуть свойства объекта в кавычках, как это?

var VariableName = { 
    'firstProperty': 1, 
    'secondProperty': 2 
} 

Действительно ли это Single quotes in JavaScript object literal правильный ответ?

+2

Может быть интересно отметить, что при использовании объектной литературной нотации кавычки * могут * быть опущены *, спецификация JSON ** требует ** имен ключей для ** double **, указанных. – Matt

ответ

21

Нет, вам не нужно это делать.

Единственные причины цитировать объектные ключи

  • имя свойства зарезервировано/используется браузер/JS двигатель (например, «класс» в IE)
  • у вас есть специальные символы или белые пробелы в ваших ключевых

так, например

var VariableName = { 
    "some-prop": 42, // needs quotation because of `-` 
    "class": 'foobar' // doesn't syntatically require quotes, but it will fail on some IEs 
    valid: 'yay' // no quotes required 
}; 
+3

Этот ответ не очень точен. Это не объясняет, что именно эти «специальные символы» (и не ссылаются на такое объяснение), и в нем упоминается только поведение ES3, когда зарезервированные слова не могут использоваться как имена некотируемых свойств - в ES5 это разрешено. См. Мой ответ по дублирующему вопросу здесь: http://stackoverflow.com/a/9568622/96656 –

1

Для Javascript вам обычно не нужно использовать кавычки. Вы можете использовать ' или ", если хотите, и вы должны использовать кавычки, если есть столкновение между именем вашей собственности и зарезервированным словом JS, например null. Ответ, который вы связали, кажется правильным, да.

Для JSON, you should use " around strings (имена в том числе объектов собственности)

4

имена свойств в литералов объектов должны быть строки, числа или идентификаторы. Если имя является допустимым идентификатором, вам не нужны кавычки, иначе они будут следовать тем же правилам, что и строки.

firstProperty и secondProperty являются действительными идентификаторами, поэтому вам не нужны кавычки.

Дополнительную информацию см. На странице 65 из the specification.

4

Вы только должны использовать кавычки вокруг свойства, если имя свойства является зарезервированным словом (например, для, in, function, ...). Таким образом вы не позволяете Javascript пытаться интерпретировать ключевое слово как часть языка и, скорее всего, получить синтаксическую ошибку. Кроме того, если вы хотите использовать пробелы в именах свойств, вам также нужно использовать кавычки. Если ваши имена свойств являются просто нормальными именами без каких-либо возможностей или пробелов в сговоре, вы можете использовать синтаксис, который вы предпочитаете.

Еще одна возможность, требующая использования кавычек, заключается в использовании мини-инструментов Javascript, таких как компилятор google закрытия, поскольку он имеет тенденцию заменять все имена свойств. Однако, если вы помещаете свои имена свойств в кавычки, компилятор замыкания сохраняет свойство по мере его кодирования. Это имеет некоторое значение при экспорте объектов в библиотеке или использовании объекта параметра.

Смежные вопросы