ES6-Array-Destrukturierungsanomalie
In ES6 ermöglicht die Array-Destrukturierung eine bequeme Zuweisung von Array-Elementen zu Variablen. Bei der Destrukturierung ohne ordnungsgemäße Verwendung von Semikolons tritt jedoch ein unerwartetes Verhalten auf.
Beachten Sie den folgenden Code:
<code class="js">let a, b, c [a, b] = ['A', 'B'] [b, c] = ['BB', 'C'] console.log(`a=${a} b=${b} c=${c}`)</code>
Erwartete Ausgabe:
Tatsächliche Ausgabe:
Erklärung
Das unerwartete Verhalten entsteht durch das Fehlen von Semikolons zwischen den beiden Destrukturierungsanweisungen. In ES6 werden Semikolons nicht automatisch eingefügt. Daher wird der Code als eine große 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>
In dieser Anweisung wertet der Kommaoperator den letzten Ausdruck in der Klammer aus, der die Zuweisung des Arrays ['BB', 'C '] auf der linken Seite (b, c). Als Ergebnis erhält b „BB“ und c erhält „C“.
Die zweite Destrukturierungszuweisung wird jedoch fälschlicherweise dem leeren Array-Literal ([]) anstelle des Arrays ['BB', ' C']. Dies liegt daran, dass das Array-Literal in Klammern ohne Semikolon am Zeilenanfang eingeschlossen ist.
Um dieses Problem zu beheben, verwenden Sie Semikolons, um die einzelnen Zuweisungen zu trennen:
<code class="js">let a, b, c; [a, b] = ['A', 'B']; [b, c] = ['BB', 'C']; console.log(`a=${a} b=${b} c=${c}`);</code>
Mit dem Bei richtiger Verwendung von Semikolons wird die erwartete Ausgabe erhalten.
Das obige ist der detaillierte Inhalt vonES6-Array-Destrukturierungsanomalie: Warum sind Semikolons wichtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!