Есть ли разница между
obj = {'foo': 'bar'}
и
obj = {foo: 'bar'}
Я заметил, что вы не можете использовать -
в ключе, когда я не использую кавычки. Но действительно ли это имеет значение? Если да, то какой?
javascript
MeO
источник
источник
obj = { 12e34: true };
не то же самое, чтоobj = { '12e34': true };
. Первый из них потребует от вас доступа к собственности черезobj['1.2e+35']
, в то время как для второго вы будете использоватьobj['12e34']
. Смотрите мой ответ для более подробной информации.Из Uncooted имен свойств / ключей объектов в JavaScript моя статья по теме:
Обратите внимание, что зарезервированные слова могут быть использованы в качестве имен свойств без кавычек в ES5. Однако, для обратной совместимости с ES3, я бы все равно предложил их процитировать.
Я также создал инструмент, который сообщит вам, можно ли использовать любое заданное имя свойства без кавычек и / или с точечной нотацией. Попробуйте это по адресу mothereff.in/js-properties .
источник
Здесь нет никакой разницы. Просто вопрос стиля. Одной из причин для этого является возможность использовать «super» или «class» в качестве ключа, поскольку это зарезервированные ключевые слова.
У некоторых людей может возникнуть искушение передать строку с пробелом, а затем вызвать o [«У меня может быть пробел»]. Но я бы назвал это плохой практикой.
источник
Нет, не в javascript. Однако некоторые синтаксические анализаторы JSON не будут работать, если кавычки вокруг ключей отсутствуют.
источник
Есть ситуации, когда они разные. Например, если вы используете jQuery и создаете список параметров для передачи при вызове команды jQuery $ () для создания элемента, слова в кавычках превращаются в параметры, а слова в кавычках превращаются в функции. Например, «size» установит атрибут размера объекта, а size (без кавычек) вызовет функцию size () для объекта. Смотрите jQuery () , внизу:
источник