Código:Javascript navegador Peculiaridades - Array.length
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Unusual Array Lengths!</title>
<script type="text/javascript">
var arrayList = new Array();
arrayList = [1, 2, 3, 4, 5, ];
alert(arrayList.length);
</script>
</head>
<body>
</body>
</html>
Aviso de la coma extra en la declaración de matriz. El código anterior da diferentes salidas para varios navegadores:
Safari: 5
Firefox: 5
IE: 6
El coma adicional en la matriz está siendo ignorada por Safari y FF mientras IE lo trata como otro objeto en la matriz.
En alguna búsqueda, he encontrado opiniones encontradas sobre qué respuesta es la correcta. La mayoría de las personas dice que IE es correcto, pero Safari también está haciendo lo mismo que Firefox. No he probado esto en otros navegadores como Opera, pero asumo que hay discrepancias.
Mis preguntas:
i. ¿Cuál de estos es el correcto?
Editar: Por consenso general (y las pautas de ECMAScript) suponemos que IE nuevamente tiene la culpa.
ii. ¿Hay alguna otra carencia del navegador Javascript de la que deba tener cuidado?
Editar: Sí, hay un montón de peculiaridades de Javascript. www.quirksmode.org es un buen recurso para el mismo.
iii. ¿Cómo evito errores como estos?
Editar: Utilice JSLint para confirmar su javascript. O bien, use algunos externos libraries. O bien, sanitize su código.
Gracias a DamienB, JasonBunting, John y Konrad Rudolph por sus entradas.
¡¡¡Gracias, gracias, gracias!!! ¡Una coma extra estúpida estaba causando que IE8 se comportara de manera diferente a FireFox y me estaba conduciendo por la pared tratando de resolverlo! – Tom
Gracias por hacer esta pregunta, me ayudó a resolver un problema que estaba teniendo con IE no manejando una matriz como se esperaba. :) –
Gracias por esto. Obtuve un error de JavaScript de IE8 cuando revisé el .length de un elemento de matriz. Y la causa fue una coma extra en la declaración de matriz. – jamesnotjim