Mengapa Pemusnahan Tatasusunan Menghasilkan Nilai Tidak Dijangka dalam ES6?

Patricia Arquette
Lepaskan: 2024-10-24 06:06:30
asal
958 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk
  • [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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!