Assegnazione multipla in javascript? Cosa fa = ; significare?

Per un progetto uno sviluppatore ci ha inviato un file .js con codice simile a questo:

var myList = [1,2,3]; var a,b,c; [a,b,c] = myList; 

Funziona in Opera 10.30, Firefox 3.6.x ma non è ok per Opera 10.60 e Chrome.

È solo curiosità, hai qualche riferimento o link che dice che questo codice è conforms allo standard JS / ECMA o no?

Cosa ne pensi?

Questa è una funzione chiamata assegnazione destrutturante , che è stata aggiunta in JavaScript 1.7 e ECMAScript 6. Non fa parte di ECMAScript 5: Che cos’è il supporto cross browser per le nuove funzionalità di JavaScript 1.7? Specificamente le comprensibilità dell’array e la dichiarazione “let”

Questo è un compito destrutturante, disponibile in Javascript 1.7 (mozilla) e alcuni browser più recenti: http://www.robertnyman.com/javascript/javascript-1.7.html#destructuring-assignment

Ecco un aggiornamento sull’argomento: dalla versione 1.7 di JavaScript , i compiti di destrutturazione sono supportati da tutti i principali browser: vedi compatibilità del browser .

La syntax dell’assegnazione destrutturante è un’espressione JavaScript che consente di decomprimere valori da array o proprietà da oggetti in variabili distinte.

– Documentazione di MDN

Quindi puoi fare:

 let a, b; [a, b] = ["Hello", "World"]; console.log(a); // "Hello" console.log(b); // "World" 

O semplicemente in una riga se stai definendo le variabili:

 let [a, b] = ["Hello", "World"]; console.log(a); // "Hello" console.log(b); // "World" 

Il precedente motore JavaScript “futhark” di Opera aveva il supporto per questo, ma è stato abbandonato nel nuovo motore “carakan”, perché era non standard, non richiesto sul web e avrebbe complicato la nuova e velocissima implementazione.