Почему некоторые свойства литерала объектов заключаются в кавычки и другие нет? [дубликат]

Этот вопрос уже имеет ответ здесь:

Я вижу это все время: литералы объектов объявили таким образом, что некоторые ключи окружаются кавычками, и другие не. Пример из jQuery 1.4.2:

jQuery.props = {
    "for": "htmlFor",
    "class": "className",
    readonly: "readOnly",
    maxlength: "maxLength",
    cellspacing: "cellSpacing",
    rowspan: "rowSpan",
    colspan: "colSpan",
    tabindex: "tabIndex",
    usemap: "useMap",
    frameborder: "frameBorder"
};

Что является значением обертывания первых двух ключей свойства (for и class) с кавычками, при оставлении других кавычкой меньше? Есть ли какие-либо различия вообще?

Я вводил по абсолютному адресу вокруг спецификации ECMAScript 5; все, что я был в состоянии найти, является [Примечанием 6 Раздела 15.12.3, шахта акцента]:

ПРИМЕЧАНИЕ 6 Объект представляется, поскольку вводная левая фигурная скобка, сопровождаемая нулем или большим количеством свойств, разделенных с запятыми, согласилась с правой фигурной скобкой. Свойство является заключенной в кавычки Строкой, представляющей ключ или имя свойства, двоеточие и затем stringified значение свойства. Массив представляется, поскольку вводная левая скобка, сопровождаемая нулем или большим количеством значений, разделенных с запятыми, согласилась с правой скобкой.

Однако это относится только к stringification JSON.

27
задан ntownsend 27 February 2010 в 20:34
поделиться

4 ответа

Это зарезервированные слова Javascript, и (хотя и не обязательно) синтаксис языка требует, чтобы они были заключены в кавычки.

Строго говоря, чистая нотация «JSON» требует, чтобы были заключены в кавычки все ключевые строки. Однако сам Javascript в порядке с ключами, которые являются действительными идентификаторами (но не зарезервированными словами), без кавычек.

37
ответ дан 28 November 2019 в 05:15
поделиться

В Javascript есть много зарезервированных слов, которые на самом деле не используются языком, которые, я думаю, были зарезервированы для возможного использования в будущем. класс является одним из них, хотя Javascript фактически не использует классы. Другой - goto , и нет никаких шансов, что он когда-либо будет использован. Однако в результате, если вы хотите использовать их в качестве json-ключа, его необходимо указать. Строго говоря, вам, вероятно, следует всегда указывать свои ключи, чтобы избежать возможности попасть в ловушку неиспользуемых зарезервированных слов javascript (заметьте - я никогда не делаю).

1
ответ дан 28 November 2019 в 05:15
поделиться

для и класс - ключевые слова языка. Ваш интерпретатор выдаст SyntaxError, если они не заключены в кавычки.

См. Раздел 7.6.1.1 Спецификации, на которую вы ссылаетесь.

1
ответ дан 28 November 2019 в 05:15
поделиться

Ключевые слова языка Javascript или зарезервированные ключевые слова являются всегда в кавычках.

2
ответ дан 28 November 2019 в 05:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: