Rumah >hujung hadapan web >tutorial js >Mengapa JavaScript Menghasilkan Keputusan yang Tidak Dijangka dengan Array dan Penggabungan Objek?
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.
[] + []
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.
[] + {}
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]'.
{} + []
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.
{} + {}
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)
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!