javascript ecmascript - Objektdestrukturierung ohne Var




1 Answers

Das Problem rührt daher, dass die {...} Operatoren in JavaScript mehrere Bedeutungen haben.

Wenn { am Anfang einer Anweisung steht , wird immer ein block angezeigt, dem keine zugewiesen werden kann. Wenn es später in der Anweisung als Ausdruck erscheint , repräsentiert es ein Objekt.

Die var hilft dabei, diese Unterscheidung vorzunehmen, da sie nicht wie die Klammerung einer Anweisung folgen kann:

( {a, b} = objectReturningFunction() );
browser support

Warum gibt es bei der Destrukturierung von Objekten einen Fehler, wenn kein var Schlüsselwort davor steht?

{a, b} = {a: 1, b: 2};

throws SyntaxError: expected expression, got '='

Die folgenden drei Beispiele funktionieren ohne Probleme

var {a, b} = {a: 1, b: 2};
var [c, d] = [1, 2];
    [e, f] = [1, 2];

Bonusfrage: Warum brauchen wir keine var für die Destrukturierung von Arrays?

Ich stieß auf das Problem, etwas zu tun

function () {
  var {a, b} = objectReturningFunction();

  // Now a and b are local variables in the function, right?
  // So why can't I assign values to them?

  {a, b} = objectReturningFunction();
}



Related

javascript ecmascript-6