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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top