2012-02-08 18 views
7

Digamos que tengo el siguiente objeto:Javascript propiedad de objeto cita

var VariableName = { 
    firstProperty: 1, 
    secondProperty: 2 
} 

¿Tengo que envolver las propiedades de objeto entre comillas así?

var VariableName = { 
    'firstProperty': 1, 
    'secondProperty': 2 
} 

¿Es Single quotes in JavaScript object literal la respuesta correcta?

+2

Puede ser interesante observar que, aunque las comillas * pueden * omitirse de los nombres cuando se utiliza la notación literal de objetos, la especificación JSON ** requiere ** nombres de clave para ** doble ** citado. – Matt

Respuesta

21

No, no necesita hacer eso.

Las únicas razones para citar objetos-llaves son

  • el nombre de la propiedad está reservada/utilizado por el motor del navegador/js (por ejemplo. "Clase" en IE)
  • tiene caracteres especiales o blanco espacios en su clave

así, por ejemplo

var VariableName = { 
    "some-prop": 42, // needs quotation because of `-` 
    "class": 'foobar' // doesn't syntatically require quotes, but it will fail on some IEs 
    valid: 'yay' // no quotes required 
}; 
+3

Esta respuesta no es realmente precisa. No explica cuáles son exactamente esos "caracteres especiales" (y no se relaciona con tal explicación), y solo menciona el comportamiento de ES3 donde las palabras reservadas no pueden usarse como nombres de propiedad sin comillas - en ES5 esto está permitido. Vea mi respuesta en una pregunta duplicada aquí: http://stackoverflow.com/a/9568622/96656 –

1

Para Javascript, generalmente no es necesario utilizar comillas. Puede usar ' o " si lo desea, y debe utilizar las cotizaciones si hay un choque entre el nombre de su propiedad y una palabra reservada de JS como null. La respuesta a la que vinculó parece ser correcta, sí.

Para JSON, you should use " around strings (incluyendo nombres de propiedad de objeto)

4

Los nombres de propiedad de objetos literales deben ser cadenas, números o identificadores. Si el nombre es un identificador válido, entonces no necesita cotizaciones, de lo contrario, siguen las mismas reglas que las cadenas.

firstProperty y secondProperty son identificadores válidos, por lo que no necesita presupuestos.

Consulte la página 65 de the specification para obtener más detalles.

4

es suficiente con utilizar el citas alrededor de la propiedad, si el nombre de la propiedad es una palabra reservada (como para, en, función, ...). De esta forma evitará que Javascript intente interpretar la palabra clave como parte del lenguaje y muy probablemente obtenga un error de sintaxis. Además, si desea utilizar espacios en nombres de propiedad, también debe usar comillas. Si los nombres de sus propiedades son solo nombres normales sin potencial de colusión o espacios, puede usar la sintaxis que prefiera.

Otra posibilidad que requiere citas es el uso de miniaturas de Javascript como el compilador de cierre de google, ya que tiende a reemplazar todos los nombres de propiedad. Sin embargo, si coloca los nombres de sus propiedades entre comillas, el compilador de cierre conservará la propiedad tal como la codificó. Esto tiene cierta relevancia al exportar objetos en una biblioteca o al usar un objeto de parámetro.

Cuestiones relacionadas