Rumah  >  Artikel  >  hujung hadapan web  >  Mengapa Pemusnahan Tatasusunan Menghasilkan Nilai Tidak Dijangka dalam ES6?

Mengapa Pemusnahan Tatasusunan Menghasilkan Nilai Tidak Dijangka dalam ES6?

Patricia Arquette
Patricia Arquetteasal
2024-10-24 06:06:30959semak imbas

Why Does Array Destructuring Result in Unexpected Values in ES6?

Keanehan Pemusnahan Tatasusunan dalam ES6

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>
  • [a, b] = …; ialah tugasan yang memusnahkan seperti yang dijangkakan.
  • (… = ['BB', 'C']) ialah ungkapan tugasan yang memberikan tatasusunan ke sebelah kiri dan menilai kepada tatasusunan.
  • 'A', 'B' ialah rujukan sifat pada literal tatasusunan.
  • (b, c) menggunakan operator koma, menilai kepada c (yang tidak ditentukan).

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!

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