En la mayoría de los serializadores/deserializadores JSON, la parte "clave" en un diccionario javascript/matriz hash se escribe como una cadena.¿Por qué la parte "clave" en un hash/dict JS debe ser una cadena?
¿Cuál es la ventaja de utilizar una cadena como clave en lugar de simplemente escribir el nombre deseado en?
Por ejemplo, digamos que definir dos objetos k1
y k2
así:
var k1 = { a: 1, b: 2, c: 3 }; // define name normally
var k2 = { "a": 1, "b": 2, "c": 3 }; // define name with a string
Y entonces me encontré las siguientes pruebas:
alert(k1 == k2); // false (of course)
alert(k1.a == k2.a); // true
alert(k1["b"] == k2["b"]); // true
alert(uneval(k1)); // returns the k1 object literal notation.
alert(uneval(k2)); // returns the same string as above line.
alert(uneval(k1) == uneval(k2)); // true
Entonces, ¿cuál es el punto de tener las llaves estén en comillas dobles (una cadena) como en la forma en que se definió k2
en lugar de solo escribir los nombres de las teclas como en la forma en que se definió k1
Acabo de ver esto en más de Ajaxian señalando Aaron Boodman's blog entry:
chromium.tabs.createTab({
"url": "http://www.google.com/",
"selected": true,
"tabIndex": 3
});
ya que él también los casos de uso del camello por tabIndex, no veo ningún punto en el uso de una cadena en absoluto.
Por qué no:
chromium.tabs.createTab({
url: "http://www.google.com/",
selected: true,
tabIndex: 3
});
¿Por qué un ninja JS sigue la convención de convertir url
, y selected
tabIndex
en una cadena?
Supongo que la convención en javascript simplemente se filtró después de haber trabajado con una gran cantidad de JSON, entonces ... – chakrit
Creo que la compatibilidad de python se mencionó como una razón para las cotizaciones – cobbal
@chakrit Sí. Además, como señala gizmo, generalmente es más seguro usar comillas en JavaScript, ya que no tiene que preocuparse por las palabras reservadas.Por ejemplo, {do: "something"} no es JavaScript legal. –