Rumah > hujung hadapan web > tutorial js > Mengapa JavaScript Menghasilkan Keputusan yang Tidak Dijangka dengan Array dan Penggabungan Objek?

Mengapa JavaScript Menghasilkan Keputusan yang Tidak Dijangka dengan Array dan Penggabungan Objek?

DDD
Lepaskan: 2024-12-14 20:10:26
asal
343 orang telah melayarinya

Why Does JavaScript Produce Unexpected Results with Array and Object Concatenation?

Gelagat Pelik JavaScript Didedahkan

Dalam ceramah "Wat" yang menarik di CodeMash 2012, beberapa gelagat JavaScript yang pelik telah diserlahkan. Mari kita mendalami kebiasaan ini dan mendedahkan mekanisme asas yang terlibat.

[Array] [Array]

[] + []
Salin selepas log masuk

Hasil yang Dijangka: Rentetan kosong

Penjelasan: Dalam JavaScript, operator menukar operan tatasusunan kepada primitif, menghasilkan rentetan kosong untuk tatasusunan. Selepas itu, ia menggabungkan rentetan ini, menghasilkan rentetan kosong.

[Array] [Objek]

[] + {}
Salin selepas log masuk

Hasil Jangkaan: '[Objek]'

Penjelasan: Kedua-dua operan sekali lagi ditukar kepada primitif. Tatasusunan lalai kepada rentetan kosong, manakala objek menghasilkan '[objek Objek]'. Operator menggabungkannya, menghasilkan '[Objek]'.

[Objek] [Array]

{} + []
Salin selepas log masuk

Hasil Jangkaan: [Objek]

Penjelasan: Dalam kes ini, JavaScript menganggap {} sebagai pernyataan blok kosong, mengembalikan nilai kosong. Oleh itu, pengendali menukar [Array] kepada primitif (rentetan kosong) dan mengembalikan [Objek] bukannya 0, seperti yang dicadangkan dalam video.

[Objek] [Objek]

{} + {}
Salin selepas log masuk

Hasil Jangkaan: Objek

Penjelasan: Sama seperti contoh sebelumnya, kedua-dua operan ditukar kepada rentetan kosong. Walau bagaimanapun, oleh kerana pengendali digunakan dalam konteks hujah fungsi, peraturan penghuraian blok ditindih dan {} ditafsirkan sebagai literal objek kosong. Menggabungkan dua objek kosong menghasilkan 'Objek'.

Array(16).join("wat" - 1)

Array(16).join("wat" - 1)
Salin selepas log masuk

Hasil Jangkaan: NaN diulang 16 kali

Penjelasan: Operan ialah ditukar kepada nombor. "wat" - 1 menghasilkan NaN (bukan nombor), yang kemudiannya ditukar kepada rentetan ("NaN"). Kaedah join() menggabungkan rentetan "NaN" sebanyak 16 kali.

Dalam video, apabila "wat" 1 digunakan sebaliknya, pengendali penambahan menukar 1 kepada rentetan, menyebabkan "wat1" digabungkan 16 kali.

Gelagat kompleks ini selalunya berpunca daripada penukaran jenis tersirat dan semantik pengendali yang ditakrifkan dalam spesifikasi bahasa JavaScript. Memahami selok-belok ini membantu pembangun menavigasi kebiasaan dan menulis kod yang mantap dalam bahasa serba boleh ini.

Atas ialah kandungan terperinci Mengapa JavaScript Menghasilkan Keputusan yang Tidak Dijangka dengan Array dan Penggabungan Objek?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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