Los objetos Javascript se pueden usar como mapas. La siguiente todo es código válido:¿Es nulo un nombre de propiedad javascript válido?
var x = {};
x.a = 1;
x['b'] = 2; // the same as x.b = 2;
x[3] = 3; // x.3 won't work, but this syntax works fine. Also, x[3] == x['3'].
x['What, this works too?!?!?'] = 'Yup, it does!';
Pero hoy he probado otro caso que ... parece funcionar, pero plantea algunas banderas de advertencia en mi cabeza porque se ve mal ...:
x[null] = 42;
Ahora, sería genial si funcionara como se esperaba (no tendré que volver a escribir un montón de código), pero ¿puedo confiar en ello? O tal vez esto es solo un comportamiento indocumentado que solo sucede para funcionar en todos los navegadores modernos, pero ¿podría dejar de funcionar en la próxima versión de Google Chrome?
El argumento de indexación se convierte en una cadena antes de realizar cualquier operación. Pruebe 'console.log (x [" null "])' después de su última tarea. Usted notó que cuando se trata del subíndice '3'. –
También es divertido: 'x [x] = 1', que técnicamente está indexado como' x ['[object object]'] 'y el mismo valor que' x [{}] '. Y si odias a otras personas: 'x [x [x]] = 2'. – Deestan