¿Hay alguna diferencia entre
obj = {'foo': 'bar'}
y
obj = {foo: 'bar'}
He notado que no puedes usar -
la clave cuando no uso las comillas. ¿Pero realmente hace la diferencia? En caso afirmativo, ¿cuál?
javascript
meo
fuente
fuente
obj = { 12e34: true };
no es lo mismo queobj = { '12e34': true };
. El primero requeriría que acceda a la propiedad a travésobj['1.2e+35']
, mientras que para el segundo lo usaríaobj['12e34']
. Vea mi respuesta para más detalles.De los nombres de propiedad sin comillas / claves de objeto en JavaScript , mi escrito sobre el tema:
Tenga en cuenta que las palabras reservadas pueden usarse como nombres de propiedad sin comillas en ES5. Sin embargo, para la compatibilidad con ES3, sugiero citarlos de todos modos.
También creé una herramienta que le dirá si algún nombre de propiedad puede usarse sin comillas y / o con notación de puntos. Pruébelo en mothereff.in/js-properties .
fuente
No hay diferencia aquí. Solo es cuestión de estilo. Una de las razones para hacer esto es poder usar 'super' o 'clase' como clave, ya que esas son palabras clave reservadas.
Algunas personas podrían verse tentadas a pasar una cadena con espacios en blanco y luego llamar o ['Puedo tener espacios en blanco'] Pero yo llamaría a eso una mala práctica.
fuente
No, no a javascript. Sin embargo, algunos analizadores JSON fallarán cuando las comillas alrededor de las claves no estén presentes.
fuente
Hay algunas situaciones en las que son diferentes. Por ejemplo, si está usando jQuery, y está haciendo una lista de parámetros para pasar al llamar al comando jQuery $ () para crear un elemento, las palabras entre comillas se convierten en parámetros y las palabras no entre comillas se convierten en funciones. Por ejemplo, "tamaño" establecerá el atributo de tamaño del objeto, y tamaño (sin comillas), llamará a la función size () en el objeto. Ver jQuery () , cerca de la parte inferior:
fuente