Mengapa Pemusnahan Array ES6 Saya Membawa kepada Gelagat Tidak Dijangka?

Susan Sarandon
Lepaskan: 2024-10-24 06:39:30
asal
584 orang telah melayarinya

Why Did My ES6 Array Destructuring Lead to Unexpected Behavior?

Pemusnahan Tatasusunan ES6: Memahami Gelagat Tidak Dijangka

Dalam ES6, pemusnahan tatasusunan membolehkan kami mengekstrak elemen tertentu daripada tatasusunan dan menetapkannya untuk pembolehubah. Walau bagaimanapun, tingkah laku yang tidak dijangka boleh berlaku apabila peraturan sintaks tertentu diabaikan. 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>
Salin selepas log masuk

Hasil Jangkaan:

  • a = A
  • b = BB
  • c = C

Hasil Sebenar:

  • a = BB
  • b = C
  • c = undefined

Penjelasan:

Seperti yang dinyatakan dalam soalan, ketiadaan koma bertitik antara baris membawa kepada tingkah laku yang tidak dijangka ini. Tanpa titik bertitik yang jelas, kod ditafsirkan 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>
Salin selepas log masuk

Pecahan ini menerangkan hasil luar biasa:

  • [a, b] = ([' A', 'B'] menetapkan a kepada undefined dan b kepada B.
  • [(b, c)] = ['BB', 'C'] membalut penetapan tatasusunan kepada b dan c di dalam ungkapan penugasan, menyebabkan ia dinilai kepada tatasusunan.
  • 'A', 'B' ialah rujukan sifat pada tatasusunan literal.
  • (b, c) menggunakan operator koma, yang mempunyai kesan menilai c (yang tidak ditentukan).

Untuk mengelakkan akibat yang tidak diingini ini, ia adalah penting untuk menambah koma bertitik selepas pernyataan yang bermula dengan kurungan, kurungan, operator bahagi, operator tambah, operator tolak atau tanda belakang (untuk templat yang ditandakan), kami memastikan setiap baris dianggap sebagai pernyataan yang berasingan, menghalang penilaian yang tidak dijangka dan keputusan yang salah.

Atas ialah kandungan terperinci Mengapa Pemusnahan Array ES6 Saya Membawa kepada Gelagat Tidak Dijangka?. 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!