Existe alguma diferença entre
obj = {'foo': 'bar'}
e
obj = {foo: 'bar'}
Percebi que você não pode usar -
a chave quando não uso as aspas. Mas isso realmente faz diferença? Se sim, qual?
javascript
meo
fonte
fonte
obj = { 12e34: true };
não é o mesmo queobj = { '12e34': true };
. O primeiro exigiria o acesso à propriedadeobj['1.2e+35']
, enquanto o último você usariaobj['12e34']
. Veja minha resposta para mais detalhes.Em Nomes de propriedades não citados / chaves de objeto em JavaScript , minha redação sobre o assunto:
Observe que palavras reservadas podem ser usadas como nomes de propriedades não citadas no ES5. No entanto, para compatibilidade retroativa com o ES3, sugiro citá-los de qualquer maneira.
Também criei uma ferramenta que informa se qualquer nome de propriedade pode ser usado sem aspas e / ou com notação de ponto. Experimente em mothereff.in/js-properties .
fonte
Não há diferença aqui. Apenas uma questão de estilo. Uma das razões para fazer isso é poder usar 'super' ou 'classe' como chave, pois são palavras-chave reservadas.
Algumas pessoas podem ficar tentadas a passar uma cadeia de caracteres com espaço em branco e então chamar o ['I can have white space']. Mas eu chamaria isso de má prática.
fonte
Não, não para javascript. No entanto, alguns analisadores JSON falharão quando as aspas ao redor das chaves não estiverem presentes.
fonte
Existem algumas situações em que são diferentes. Por exemplo, se você estiver usando o jQuery e estiver fazendo uma lista de parâmetros a serem transmitidos ao chamar o comando jQuery $ () para criar um elemento, as palavras entre aspas serão transformadas em parâmetros e as palavras não entre aspas serão transformadas em funções. Por exemplo, "size" definirá o atributo size do objeto e size (sem aspas) chamará a função size () no objeto. Veja jQuery () , na parte inferior:
fonte