ES6 陣列解構異常
在 ES6 中,陣列解構允許將陣列元素方便地分配給變數。但是,在未正確使用分號的情況下進行解構時,會出現意外行為。
請考慮以下程式碼:
<code class="js">let a, b, c [a, b] = ['A', 'B'] [b, c] = ['BB', 'C'] console.log(`a=${a} b=${b} c=${c}`)</code>
預期輸出:
a=A b =BB c=C
a=A b =BB c=C
a=A b =BB c=C<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>實際輸出:
a=BB b=C c=undefined
<code class="js">let a, b, c; [a, b] = ['A', 'B']; [b, c] = ['BB', 'C']; console.log(`a=${a} b=${b} c=${c}`);</code>解釋意外的行為是由於兩個解構語句之間缺少分號而造成的。在 ES6 中,分號不會自動插入。因此,程式碼被解析為一個大語句:在該語句中,逗號運算子計算出括號中的最後一個表達式,即數組['BB', 'C '] 到左側(b, c)。結果,b 收到 'BB',c 收到 'C'。 但是,第二個解構賦值被錯誤地分配給空數組文字 ([]),而不是數組 ['BB', ' C']。這是因為陣列文字括在括號中,行首沒有分號。 要解決此問題,請使用分號分隔各個賦值:使用正確使用分號,可以獲得預期的輸出。
以上是ES6 陣列解構異常:為什麼分號很重要?的詳細內容。更多資訊請關注PHP中文網其他相關文章!