Teka-teki Kesamaan JavaScript: "0" Adalah Palsu, Tetapi Ia Benar Apabila Diuji dengan if
Pengendali kesamaan JavaScript boleh membawa kepada hasil yang tidak dijangka, seperti yang ditunjukkan oleh kod berikut:
console.log("0" == false); // true console.log(false == "0"); // true
Kod ini membayangkan bahawa rentetan "0" adalah bersamaan dengan nilai Boolean palsu. Walau bagaimanapun, kod berikut mencetak "ha" walaupun syaratnya ialah "0":
if ("0") console.log("ha"); // ha
Mengapa ini berlaku?
Untuk memahami tingkah laku ini, kita perlu untuk memahami nilai JavaScript yang benar dan palsu. Dalam JavaScript, nilai berikut adalah palsu:
false 0 "" null undefined NaN
Semua nilai lain adalah benar.
Dalam dua baris pertama coretan kod, pengendali kesamaan (==) melakukan paksaan jenis untuk membandingkan rentetan "0" dengan nilai Boolean palsu. Memandangkan "0" ialah nilai palsu, ia dianggap sama dengan palsu.
Walau bagaimanapun, pernyataan if dalam baris ketiga kod menggunakan kesamaan ketat (===), yang hanya mempertimbangkan nilai jenis yang sama sama rata. Memandangkan "0" ialah rentetan dan false ialah Boolean, syarat tersebut dinilai sebagai palsu.
Untuk mengelakkan kekeliruan, adalah disyorkan untuk menggunakan kesamaan yang ketat (===) apabila membandingkan nilai dalam JavaScript. Kod yang diubah suai berikut akan mencetak "nothing":
if ("0" === false) console.log("ha"); // nothing
Dengan memahami perbezaan antara kesamaan (==) dan kesamaan ketat (===), anda boleh menulis kod JavaScript yang membandingkan nilai dengan tepat.
Atas ialah kandungan terperinci Mengapa '0' Sama Palsu, Tetapi Ia Benar Apabila Diuji dengan jika dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!