Mengapa Pemusnahan Tatasusunan ES6 tanpa Titik Titik Menunjukkan Tingkah Laku Tidak Teratur?

DDD
Lepaskan: 2024-10-24 06:23:30
asal
483 orang telah melayarinya

Why Does ES6 Array Destructuring with No Semicolons Exhibit Irregular Behavior?

Ketaksekataan Pemusnahan Tatasusunan ES6

Anomali menarik berlaku apabila menggunakan pemusnahan tatasusunan ES6 seperti yang ditunjukkan dalam coretan kod berikut:

<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

Analisis:

Punca utama terletak pada ketiadaan koma bertitik, yang didayakan oleh ciri penyisipan koma bertitik automatik (ASI) dalam JavaScript. Walau bagaimanapun, dalam kes khusus ini, ASI tidak memasukkan koma bertitik mengikut cara yang dijangkakan.

Kod ini secara logik dibedah seperti berikut:

<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 pemusnah konvensional.
  • (…) = ['BB', 'C'] ialah ungkapan tugasan yang menilai kepada tatasusunan.
  • ['A', 'B'] […] ialah rujukan sifat pada literal tatasusunan.
  • (b, c) menggunakan operator koma, menghasilkan c (yang tidak ditentukan).

Resolusi :

Untuk memintas keanehan ini, adalah penting untuk menambah titik bertitik secara eksplisit pada permulaan setiap baris yang bermula dengan (, [, /, , -, atau `. Pendekatan ini memastikan pemisahan pernyataan yang betul dan menghapuskan tingkah laku yang tidak dijangka.

Atas ialah kandungan terperinci Mengapa Pemusnahan Tatasusunan ES6 tanpa Titik Titik Menunjukkan Tingkah Laku Tidak Teratur?. 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
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!