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
DDDasal
2024-12-14 20:10:26343semak imbas

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]

[] + []

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]

[] + {}

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]

{} + []

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]

{} + {}

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)

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!

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