Spécifications: ECMAScript 5 et ECMAScript 3
L'article 11.1.5 dans la spécification ECMAScript 5:
ObjectLiteral :
{ }
{ PropertyNameAndValueList }
{ PropertyNameAndValueList , }
Donc, oui, il fait partie de la spécification.
Mise à jour: Apparemment, c'est nouveau dans l'ES5. Dans l'ES3 (page 41), la définition était juste:
ObjectLiteral :
{ }
{ PropertyNameAndValueList }
Pour les tableaux littéraux (Article 11.1.4), il est même plus intéressant (mise à Jour: cela existait déjà dans l'ES3):
ArrayLiteral :
[ Elisionopt ]
[ ElementList ]
[ ElementList , Elision_opt ]
(où Elision_opt
est Élisionde l'opt, sens de l'Élision est facultatif)
Elision
est défini comme
Elision :
,
Elision ,
Donc, un littéral de tableau comme
var arr = [1,2,,,,];
est parfaitement légal. Cela crée un tableau avec deux éléments, mais définit la longueur du tableau pour 2 + 3 = 5
.
N'en attendez pas trop de IE (avant IE9)...