Arrays sind als lvalues in JavaScript ECMAScript-kompatible?
-
11-09-2019 - |
Frage
Firefox 3.5.3 (zumindest) mir erlaubt, code zu schreiben, wie :
var array = [4, 5, 6];
var foo, bar, baz;
[foo, bar, baz] = array;
an welcher Stelle
foo => 4
bar => 5
baz => 6
das kann sehr hilfreich sein für die code-Klarheit.
Ist, dass als ECMAScript-kompatible?Ich wollte nicht sehen, nichts in der Spezifikation, aber JSLint gibt einen Fehler zurück.
Lösung
Nein, das ist ein feature eingeführt in JavaScript 1.7 genannt destructuring assignment.ECMAScript-JavaScript ist nicht.ECMAScript ist die versuchte Vereinheitlichung einiger JavaScript-Funktionen.Es gibt nur zwei JavaScript-engines:(Spider|Trace|Action)Affe und Nashorn.Jeder andere Motor ist eine ECMAScript-engine.
Hier sind einige Beispiele:
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
}
Oper teilweise implementiert einige destructuring assignment.Es unterstützt es nicht für Objekte oder in der Funktion Argumente, aber es unterstützt Ihr einfaches Beispiel.