¿Cuál es la diferencia entre claves de objeto con comillas y sin comillas?

Resuelto meo asked hace 14 años • 5 respuestas

¿Hay alguna diferencia entre

obj = {'foo': 'bar'} 

y

obj = {foo: 'bar'}

He notado que no puedes usar -la clave cuando yo no uso las comillas. ¿Pero realmente hace una diferencia? En caso afirmativo, ¿cuál?

meo avatar Dec 04 '10 01:12 meo
Aceptado

No, las comillas no marcan la diferencia (a menos que, como señaló, desee utilizar una clave que no sea un identificador de JavaScript válido).

Como nota al margen, el formato de intercambio de datos JSON requiere comillas dobles alrededor de los identificadores (y no permite comillas simples).

bdukes avatar Dec 03 '2010 18:12 bdukes

De Nombres de propiedad sin comillas/claves de objeto en JavaScript , mi artículo sobre el tema:

Las comillas sólo se pueden omitir si el nombre de la propiedad es un literal numérico o un nombre de identificador válido .

[…]

La notación entre corchetes se puede utilizar de forma segura para todos los nombres de propiedades.

[…]

La notación de puntos solo se puede utilizar cuando el nombre de la propiedad es un nombre de identificador válido.

Tenga en cuenta que se permite el uso de palabras reservadas como nombres de propiedades sin comillas en ES5. Sin embargo, para compatibilidad con versiones anteriores de ES3, sugeriría citarlos de todos modos.

También creé una herramienta que le dirá si algún nombre de propiedad determinado se puede usar sin comillas y/o con notación de puntos. Pruébelo en mothereff.in/js-properties .

Captura de pantalla

Mathias Bynens avatar Mar 05 '2012 14:03 Mathias Bynens