Dalam JavaScript, penilaian nilai dalam konteks logik—seperti dalam jika pernyataan atau perbandingan Boolean—boleh menghasilkan keputusan yang tidak dijangka. Tingkah laku ini disebabkan oleh mekanisme paksaan jenis JavaScript.
JavaScript menaip nilainya secara longgar dan apabila rentetan atau nilai nombor digunakan dalam konteks logik, ia mengalami paksaan jenis untuk menukarnya kepada nilai boolean. Dalam penukaran ini, rentetan bukan kosong dan nombor bukan sifar dinilai kepada benar, manakala rentetan kosong dan nombor sifar dinilai kepada palsu.
Oleh itu, apabila anda membandingkan "0" dengan palsu menggunakan == atau === , ia mengembalikan benar kerana paksaan jenis menukar kedua-dua "0" (rentetan tidak kosong) dan palsu (nilai seperti sifar) kepada benar.
Walau bagaimanapun, apabila menggunakan pernyataan if, "0" sahaja menilai kepada benar. Ini kerana jika penyataan secara dalaman menggunakan nilai boolean yang dipaksa, yang mengembalikan benar untuk rentetan bukan kosong.
Untuk mengelakkan sebarang kekaburan, disyorkan untuk menggunakan pengendali kesaksamaan yang ketat === apabila membandingkan nilai primitif, sebagai ia melakukan perbandingan tanpa paksaan jenis. Ini memastikan bahawa "0" dinilai dengan betul sebagai palsu apabila perlu.
Rujuk jadual yang dilampirkan untuk gambaran ringkas tentang tingkah laku JavaScript yang benar/palsu untuk pelbagai jenis data. Ingat, untuk perbandingan kesaksamaan sebenar, sentiasa pilih ===.
Atas ialah kandungan terperinci Mengapakah '0' Menilai kepada Benar dalam Pernyataan if Tetapi Salah dalam Perbandingan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!