ES6-Array-Destrukturierung: Unvorhergesehenes Verhalten
In ES6 kann die Destrukturierung der Zuweisung für Arrays zu unerwarteten Ergebnissen führen und Programmierer verwirrt zurücklassen. Ein solcher Fall wird durch den folgenden Code veranschaulicht:
<code class="js">let a, b, c [a, b] = ['A', 'B'] [b, c] = ['BB', 'C'] console.log(`a=${a} b=${b} c=${c}`)</code>
Beabsichtigte Ausgabe:
a=A b=BB c=C
Tatsächlich Ausgabe:
a=BB b=C c=undefiniert
Erklärung:
Entgegen den Erwartungen liefert dieser Code nicht die gewünschte Ausgabe. Stattdessen werden die Werte von b und c vertauscht, sodass c undefiniert bleibt. Um zu verstehen, warum dies geschieht, müssen wir den Code genau untersuchen.
Parsing und Auswertung:
In JavaScript sind Semikolons optional, um Anweisungen abzugrenzen. Ohne explizite Semikolons wird der Code als einzelne Anweisung analysiert:
<code class="js">let a = undefined, b = undefined, c = undefined; [a, b] = (['A', 'B'] [(b, c)] = ['BB', 'C']); console.log(`a=${a} b=${b} c=${c}`);</code>
Aufschlüsselung der Anweisung:
Implikationen:
Daher weist der Code sowohl a als auch c undefiniert zu, während b korrekt den Wert „C“ erhält. Um dieses Verhalten zu vermeiden, sollten Programmierer explizit Semikolons verwenden oder jede Zeile mit an beginnen Operator, der die automatische Einfügung eines Semikolons erfordert (z. B. (, [, /, , - oder `).
Dieses Verständnis stellt sicher, dass destrukturierende Zuweisungen in ES6 wie erwartet funktionieren und unerwartete Wertevertauschungen und undefinierte Zuweisungen verhindert .
Das obige ist der detaillierte Inhalt vonES6-Array-Destrukturierung: Warum funktioniert es nicht wie erwartet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!