Les tableaux sont comme lvalues en JavaScript ECMAScript conforme?
-
11-09-2019 - |
Question
Firefox 3.5.3 (au moins) me permet d'écrire du code comme:
var array = [4, 5, 6];
var foo, bar, baz;
[foo, bar, baz] = array;
à quel point
foo => 4
bar => 5
baz => 6
qui peut être très utile pour la clarté du code.
Est-ce considéré comme conforme ECMAScript? Je ne vois rien dans le cahier des charges, mais JSLint renvoie une erreur.
La solution
Non, c'est une fonctionnalité introduite dans JavaScript 1.7 appelé attribution déstructurer . JavaScript n'est pas ECMAScript. ECMAScript est la tentative de normalisation des fonctions JavaScript. Il y a seulement deux moteurs JavaScript: (Araignée | Trace | Action) Singe et Rhino. Chaque autre moteur est un moteur ECMAScript.
Voici quelques exemples:
var {a, b} = {b:2, a:1}; // a === 1, b === 2
var [c, d] = [3, 4]; // c === 3, d === 4
var {x: e} = {x: 5}; // e === 5
function f({a, b: c}, [d, e]) {
// same as: var [{a, b: c}, [d, e]] = arguments
}
Opera met en œuvre partiellement une cession déstructurant. Il ne supporte pas les objets ou dans les arguments de la fonction, mais il ne supporte votre exemple simple.