」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > ES6 陣列解構:為什麼它沒有如預期般運作?

ES6 陣列解構:為什麼它沒有如預期般運作?

發佈於2024-11-06
瀏覽:235

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

ES6 陣列解構:不可預見的行為

在ES6 中,陣列的解構賦值可能會導致意外的結果,讓程式設計師感到困惑。下面的程式碼說明了一個這樣的實例:

let a, b, c
[a, b] = ['A', 'B']
[b, c] = ['BB', 'C']
console.log(`a=${a} b=${b} c=${c}`)

預期輸出:
a=A b=BB c =C

實際輸出:
a=BB b=C c=undefined

解釋:

相反正如預期的那樣,此程式碼不會產生所需的輸出。相反,它交換 b 和 c 的值,使 c 未定義。要理解為什麼會發生這種情況,我們需要仔細檢查程式碼。

解析與評估:

在 JavaScript 中,分號是可選的分隔語句。如果沒有明確的分號,程式碼將被解析為單一語句:

let a = undefined, b = undefined, c = undefined;
[a, b] = (['A', 'B']
[(b, c)] = ['BB', 'C']);
console.log(`a=${a} b=${b} c=${c}`);

語句細分:

  • [a, b] = (['A', 'B'] 是一個解構賦值,與原始程式碼中的類似。
  • [(b, c)] = ['BB' , 'C '] 是一個賦值表達式,它將數組['BB', 'C'] 分配給左側運算元。 。 '][…] 是數組文字上的屬性引用,其計算結果為未定義。操作數未定義。要避免這種行為。 ES6 中的解構賦值運算如預期的那樣,防止意外的值交換和未定義的分配。
版本聲明 本文轉載於:1729721303如有侵犯,請洽[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3