Rumah >hujung hadapan web >tutorial js >Pemusnahan Array ES6: Mengapa Ia Tidak Berfungsi Seperti Yang Dijangkakan?

Pemusnahan Array ES6: Mengapa Ia Tidak Berfungsi Seperti Yang Dijangkakan?

Susan Sarandon
Susan Sarandonasal
2024-10-24 06:10:02879semak imbas

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

Pemusnahan Tatasusunan ES6: Gelagat Tidak Dijangka

Dalam ES6, memusnahkan tugasan untuk tatasusunan boleh membawa kepada hasil yang tidak dijangka, menyebabkan pengaturcara berasa hairan. Satu contoh sedemikian diilustrasikan oleh kod berikut:

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

Output yang Dimaksudkan:
a=A b=BB c=C

Sebenar Output:
a=BB b=C c=undefined

Penjelasan:

Bertentangan dengan jangkaan, kod ini tidak menghasilkan output yang diingini. Sebaliknya, ia menukar nilai b dan c, meninggalkan c tidak ditentukan. Untuk memahami sebab ini berlaku, kita perlu meneliti kod dengan teliti.

Penghuraian dan Penilaian:

Dalam JavaScript, koma bertitik adalah pilihan untuk mengehadkan pernyataan. Tanpa koma bernoktah eksplisit, kod dihuraikan sebagai satu pernyataan:

<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>

Pecahan Pernyataan:

  • [a, b] = ([ 'A', 'B'] ialah tugasan yang memusnahkan, serupa dengan tugasan dalam kod asal.
  • [(b, c)] = ['BB', 'C'] ialah ungkapan tugasan yang memperuntukkan tatasusunan ['BB', 'C'] kepada operan sebelah kiri Ungkapan ini menilai kepada tatasusunan yang sama.
  • ['A', 'B'][…] ialah rujukan sifat pada. literal tatasusunan, yang menilai kepada tidak ditentukan.
  • (b, c) menggunakan operator koma, yang menilai kepada operan terakhir (c), yang tidak ditentukan.

Implikasi:

Oleh itu, kod menetapkan undefined kepada kedua-dua a dan c, manakala b menerima nilai 'C' dengan betul untuk mengelakkan tingkah laku ini, pengaturcara harus menggunakan koma bertitik atau memulakan setiap baris dengan betul pengendali yang memerlukan koma bertitik untuk dimasukkan secara automatik (cth., (, [, /, , -, atau `).

Pemahaman ini memastikan tugasan yang memusnahkan dalam ES6 beroperasi seperti yang dijangkakan, menghalang pertukaran nilai yang tidak dijangka dan tugasan yang tidak ditentukan .

Atas ialah kandungan terperinci Pemusnahan Array ES6: Mengapa Ia Tidak Berfungsi Seperti Yang Dijangkakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn