Rumah >hujung hadapan web >tutorial js >Mengapakah JavaScript Menghasilkan Keputusan yang Tidak Dijangka dalam Rentetan dan Penyatuan Nombor dan Aritmetik?

Mengapakah JavaScript Menghasilkan Keputusan yang Tidak Dijangka dalam Rentetan dan Penyatuan Nombor dan Aritmetik?

Susan Sarandon
Susan Sarandonasal
2024-12-26 01:54:12617semak imbas

Why Does JavaScript Produce Unexpected Results in String and Number Concatenation and Arithmetic?

Keanehan JavaScript Terbongkar: Menjelaskan Keanehan dari Ceramah 'Wat'

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!

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
Artikel sebelumnya:Buang tetikusArtikel seterusnya:Buang tetikus