Rumah  >  Artikel  >  hujung hadapan web  >  Anomali Pemusnahan Tatasusunan ES6: Mengapa Titik Titik Penting?

Anomali Pemusnahan Tatasusunan ES6: Mengapa Titik Titik Penting?

Linda Hamilton
Linda Hamiltonasal
2024-10-24 06:04:02434semak imbas

ES6 Array Destructuring Anomaly: Why Are Semicolons Important?

Anomali Pemusnahan Tatasusunan ES6

Dalam ES6, pemusnahan tatasusunan membolehkan penyerahan elemen tatasusunan kepada pembolehubah dengan mudah. Walau bagaimanapun, tingkah laku yang tidak dijangka berlaku apabila memusnahkan tanpa menggunakan koma bertitik yang betul.

Pertimbangkan 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 Jangkaan:

  • a=A b =BB c=C

Output Sebenar:

  • a=BB b=C c=undefined

Penjelasan

Tingkah laku yang tidak dijangka timbul daripada ketiadaan koma bertitik di antara dua pernyataan yang memusnahkan. Dalam ES6, koma bertitik tidak dimasukkan secara automatik. Oleh itu, kod tersebut dihuraikan sebagai satu pernyataan besar:

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

Dalam pernyataan ini, pengendali koma menilai hingga ungkapan terakhir dalam kurungan, iaitu penugasan tatasusunan ['BB', 'C '] ke sebelah kiri (b, c). Akibatnya, b menerima 'BB' dan c menerima 'C'.

Walau bagaimanapun, tugasan pemusnah kedua ditugaskan secara tidak betul kepada tatasusunan kosong literal ([]) dan bukannya tatasusunan ['BB', ' C']. Ini kerana literal tatasusunan disertakan dalam kurungan tanpa koma bertitik pada permulaan baris.

Untuk menyelesaikan isu ini, gunakan koma bertitik untuk memisahkan tugasan individu:

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

Dengan penggunaan koma bertitik yang betul, output yang dijangkakan diperoleh.

Atas ialah kandungan terperinci Anomali Pemusnahan Tatasusunan ES6: Mengapa Titik Titik Penting?. 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