Also ist die grundlegende Destrukturierung in Ordnung, {a, b} = obj
wird in a = obj.a; b = obj.b
transpiliert.
Meine Frage ist ein bisschen eine seltsame Syntax, über die ich zufällig gerannt bin und ich frage mich, ob jemand mich auf die Spezifikation verweisen kann, da ich sie nicht finden kann:
%Vor% Das macht die beiden a
, b
Zuweisungen und gibt dann obj.c
zurück. Es ist für mich ziemlich nützlich für einen Byte-Stream-Decoder, da ich schreiben kann:
Mein Problem ist, dass ich diese Syntax nirgendwo gesehen habe und mich nicht auf etwas verlassen möchte, das entweder falsch implementiert oder in der Angebotsphase ist.
Es gibt in der Destrukturierungsaufgabe nichts Besonderes: Es wird wie jede andere Zuweisung mit dem Operator =
ausgewertet.
Also gibt es rval
zurück.
Was bedeutet, dass Sie sich auf Ihre Syntax verlassen können
Einige Details:
Der Destrukturierungsteil wird in 6
[ 1 ] :
Lassen Sie
status
das Ergebnis der Ausführung vonDestructuringAssignmentEvaluation
vonassignmentPattern
mitrval
als Argument sein.
und nach diesem Punkt erfolgt die Bewertung der Zuweisung wie gewöhnlich, wie im Fall a = b = 42;
.
Referenzen:
Ja, es wird erwartet, dass es so funktioniert (siehe die Antwort von @zerkms für Details). Dass Sie die Syntax nirgendwo gesehen haben, liegt daran, dass es nicht gerade praktisch ist, auf Eigenschaften des Ergebnisses eines Zuweisungsausdrucks zuzugreifen, da der Code dadurch ziemlich unlesbar wird. Ob Sie einer normalen Variablen oder einem destrukturierenden Ausdruck zuordnen, macht hier keinen großen Unterschied.
Sie könnten den Code jedoch leicht in eine sinnvolle Destrukturierungsaufgabe umwandeln:
%Vor%oder genauer gesagt, näher an Ihrem ursprünglichen Code:
%Vor%Tags und Links javascript ecmascript-6 destructuring