首頁  >  文章  >  web前端  >  為什麼 ES6 中數組解構會導致意外值?

為什麼 ES6 中數組解構會導致意外值?

Patricia Arquette
Patricia Arquette原創
2024-10-24 06:06:30959瀏覽

Why Does Array Destructuring Result in Unexpected Values in ES6?

ES6 中數組解構的怪癖

在 ES6 中,數組解構提供了一種從數組中提取和賦值的簡潔語法。但是,某些構造可能會導致意外結果。

提供的程式碼片段提出了一個問題:

為什麼此程式碼在陣列解構後會導致意外值?

<code class="javascript">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=BB, b =C, c= undefined

答案:

問題在於省略了分號,分號通常會將這些行分隔為不同的語句。如果沒有分號,程式碼將被解析為單一語句並以不同的順序進行計算:

<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] = …;是預期的解構賦值。
  • (… = ['BB', 'C']) 是一個賦值表達式,它將陣列分配到左側並計算結果為陣列。
  • 'A', 'B' 是陣列文字上的屬性參考。
  • (b, c) 使用逗號運算符,計算結果為 c(未定義)。

為了避免此類誤解並確保正確評估,必須在以 (、[、/、、- 或 `.

開頭的每一行的開頭明確包含分號

以上是為什麼 ES6 中數組解構會導致意外值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn