Además de lo que ChaosPandion mencionó, hay una diferencia importante entre un ,
al final de un objeto y una matriz. Las comas vacías en una matriz (técnicamente llamadas elisiones) insertan elementos undefined
en la posición correspondiente; esto aumenta la longitud de la matriz, pero los valores son undefined
.
Editar: Gracias a ChaosPandion y CMS para señalar el error. Acabo de volver a leer las especificaciones y, de hecho, una sola coma que se arrastra no aumenta la longitud, sin embargo, cualquier coma posterior adicional o cualquier comas en el medio de una matriz aumentará la longitud.
Por ejemplo, [ 1,2,, ]
es una matriz de longitud 3 y el mismo que [ 1, 2, undefined ]
. Del mismo modo, [ 1,,,2 ]
es una matriz de longitud 4 y la misma que [ 1, undefined, undefined, 2 ]
.
Por extraño que parezca, cuando se trata de esta "característica" de JavaScript, IE se comporta correctamente con una coma final en una matriz (cuenta el elemento extra) mientras Firefox ignora el último elemento indefinido.
+1 para ir a la especificación. Ahora, ¿por qué agregarían esa segunda línea para hacer que esta construcción legal me confunda? – mkoistinen
@mkoistinen - Ver la actualización. – ChaosPandion
¿Qué hay de ECMAScript 4? – Eric