Rumah >hujung hadapan web >tutorial js >Mengapakah '0' Menilai kepada Benar dalam Pernyataan if Tetapi Salah dalam Perbandingan?

Mengapakah '0' Menilai kepada Benar dalam Pernyataan if Tetapi Salah dalam Perbandingan?

Linda Hamilton
Linda Hamiltonasal
2024-11-05 10:47:01437semak imbas

Why Does

Memahami Keanehan JavaScript: Mengapa "0" Adalah Palsu tetapi Tidak Palsu dalam Penyata if

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!

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