Heim  >  Artikel  >  Web-Frontend  >  Warum zeigt die ES6-Array-Destrukturierung ohne Semikolons unregelmäßiges Verhalten?

Warum zeigt die ES6-Array-Destrukturierung ohne Semikolons unregelmäßiges Verhalten?

DDD
DDDOriginal
2024-10-24 06:23:30484Durchsuche

Why Does ES6 Array Destructuring with No Semicolons Exhibit Irregular Behavior?

ES6-Array-Destrukturierungsunregelmäßigkeit

Bei der Verwendung der ES6-Array-Destrukturierung tritt eine interessante Anomalie auf, wie im folgenden Codeausschnitt gezeigt:

<code class="javascript">let a, b, c;
[a, b] = ['A', 'B'];
[b, c] = ['BB', 'C'];
console.log(`a=${a} b=${b} c=${c}`);</code>

Erwartet: a=A b=BB c=C
Tatsächlich: a=BB b=C c=undefiniert

Analyse:

Die Hauptursache liegt im Fehlen von Semikolons, was durch die automatische Semikoloneinfügung (ASI) in JavaScript ermöglicht wird. In diesem speziellen Fall fügt ASI jedoch keine Semikolons ein, wie man es erwarten würde.

Der Code wird logisch wie folgt zerlegt:

<code class="javascript">let a = undefined, b = undefined, c = undefined;
[a, b] = (['A', 'B']
[(b, c)] = ['BB', 'C']);
console.log(`a=${a} b=${b} c=${c}`);</code>
  • [a, b] = …; ist die herkömmliche Destrukturierungszuweisung.
  • (…) = ['BB', 'C'] ist ein Zuweisungsausdruck, der zum Array ausgewertet wird.
  • ['A', 'B'] […] ist eine Eigenschaftsreferenz auf ein Array-Literal.
  • (b, c) verwendet den Kommaoperator, was zu c führt (was undefiniert ist).

Auflösung :

Um diese Besonderheit zu umgehen, ist es wichtig, am Anfang jeder Zeile, die mit (, [, /, , - oder `) beginnt, explizit Semikolons hinzuzufügen. Dieser Ansatz gewährleistet eine ordnungsgemäße Trennung der Anweisungen und beseitigt das unerwartete Verhalten.

Das obige ist der detaillierte Inhalt vonWarum zeigt die ES6-Array-Destrukturierung ohne Semikolons unregelmäßiges Verhalten?. 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
Vorheriger Artikel:Einführung in NodeJSNächster Artikel:Einführung in NodeJS