Heim  >  Artikel  >  Web-Frontend  >  ES6-Array-Destrukturierung: Warum funktioniert es nicht wie erwartet?

ES6-Array-Destrukturierung: Warum funktioniert es nicht wie erwartet?

Susan Sarandon
Susan SarandonOriginal
2024-10-24 06:10:02797Durchsuche

ES6 Array Destructuring: Why Doesn't It Work As Expected?

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:

  • [a, b] = ([ 'A', 'B'] ist eine destrukturierende Zuweisung, ähnlich der im Originalcode.
  • [(b, c)] = ['BB', 'C'] ist ein Zuweisungsausdruck, der weist dem linken Operanden das Array ['BB', 'C'] zu. Dieser Ausdruck ergibt dasselbe Array.
  • ['A', 'B'][…] ist eine Eigenschaftsreferenz auf ein Array-Literal, das undefiniert ausgewertet wird.
  • (b, c) verwendet den Kommaoperator, der bis zum letzten Operanden (c) ausgewertet wird, der undefiniert ist.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn