Dalam ES6, pemusnahan tatasusunan menyediakan sintaks ringkas untuk mengekstrak dan menetapkan nilai daripada tatasusunan. Walau bagaimanapun, binaan tertentu boleh membawa kepada hasil yang tidak dijangka.
Coretan kod yang disediakan menimbulkan persoalan:
Mengapa kod ini menghasilkan nilai yang tidak dijangka selepas pemusnahan tatasusunan?
<code class="javascript">let a, b, c; [a, b] = ['A', 'B']; [b, c] = ['BB', 'C']; console.log(`a=${a} b=${b} c=${c}`);</code>
Dijangka: a=A, b=BB, c=C
Sebenar: a=BB, b=C, c= undefined
Jawapan:
Isunya terletak pada peninggalan koma bertitik, yang biasanya memisahkan baris ini sebagai pernyataan yang berbeza. Tanpa koma bertitik, kod dihuraikan sebagai satu pernyataan dan dinilai dalam susunan yang berbeza:
<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>
Untuk mengelakkan salah tafsir dan memastikan penilaian yang betul, adalah penting untuk memasukkan koma bertitik secara eksplisit pada permulaan setiap baris yang bermula dengan (, [, /, , -, atau `.
Atas ialah kandungan terperinci Mengapa Pemusnahan Tatasusunan Menghasilkan Nilai Tidak Dijangka dalam ES6?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!