Domanda

Firefox 3.5.3 (almeno) mi permette di scrivere codice come:

var array = [4, 5, 6];
var foo, bar, baz;
[foo, bar, baz] = array;

a questo punto

foo => 4
bar => 5
baz => 6

che può essere molto utile per il codice chiarezza.

E 'questo considerato conforme a ECMAScript? Non ho visto nulla nella specifica, ma JSLint restituisce un errore.

È stato utile?

Soluzione

No, è una funzionalità introdotta in JavaScript 1.7 chiamato destrutturazione assegnazione . JavaScript non è ECMAScript. ECMAScript è il tentativo di standardizzazione di alcune funzioni JavaScript. Ci sono solo due motori JavaScript: (Spider | Trace | Azione) Scimmia e Rhino. Ogni altro motore è un motore ECMAScript.

Ecco alcuni esempi:

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 implementa parzialmente qualche incarico destrutturazione. Non supporta negli oggetti o in argomenti della funzione, ma non supporta il tuo esempio semplice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top