Empty Array Empty Array: The Emptiness Concatenation
Apabila menambah dua tatasusunan kosong, JavaScript menukarnya kepada primitif pertama. Dalam kes ini, nilai lalai tatasusunan ialah rentetan kosong, jadi hasilnya ialah gabungan dua rentetan kosong: rentetan kosong.
Objek Tatasusunan Kosong: Pembersihan Objek
Menukar tatasusunan kosong kepada primitif (rentetan kosong) dan objek kepada primitif (perwakilan rentetannya, "[objek Objek]") menghasilkan gabungan rentetan kosong dan perwakilan objek, menghasilkan "[objek Objek]."
Susun Kosong Objek: Aritmetik Tidak Konvensional JavaScript
Tidak seperti video, dalam JSFiddle yang disediakan, hasil {} [] ialah [Objek] bukannya 0. Percanggahan ini timbul kerana blok kosong {} ditafsirkan sebagai pernyataan blok, yang dinilai menjadi kosong. Operator unary menukar nilai kosong kepada nombor, menghasilkan 0. Walau bagaimanapun, memandangkan anda menggunakan ini dalam hujah fungsi, pernyataan itu terpaksa ditafsirkan sebagai pernyataan ungkapan. Ini menyebabkan {} dihuraikan sebagai objek kosong literal dan bukannya blok kosong, membawa kepada [Objek].
Objek Objek: Output Tidak Padan
Hasilnya daripada {} {} mestilah "Objek objek," tetapi JSFiddle menunjukkan hasil yang berbeza. Percanggahan ini berkemungkinan disebabkan oleh tingkah laku khusus pelaksanaan JavaScript di mana hasil penambahan dua objek pada rentetan boleh berbeza-beza.
Array(16).join("wat" - 1): NaN Propagation
Rentetan input untuk ungkapan ini ialah "NaN-1," yang menilai kepada NaN. Apabila JavaScript cuba menggabungkan "NaN" dengan elemen rentetan kosong tatasusunan, hasilnya sentiasa NaN mengikut algoritma penggabungan.
"wat" 1 lwn. "wat" - 1: String lwn . Penukaran Nombor
Dalam "wat" 1, JavaScript menukar 1 kepada rentetan, menghasilkan "wat1." Sebaliknya, dalam "wat" - 1, ia cuba menukar "wat" kepada nombor, yang menghasilkan NaN. Memandangkan operator penggabungan memerlukan rentetan sebagai hujah pertamanya, NaN ditukarkan kembali kepada rentetan, menyebabkan "NaN" diulang.
Atas ialah kandungan terperinci Mengapakah JavaScript Menghasilkan Keputusan yang Tidak Dijangka dalam Rentetan dan Penyatuan Nombor dan Aritmetik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!