Bagaimana saya bisa mengecek nilai null dalam JavaScript? Saya menulis kode di bawah ini tetapi tidak berhasil.
if (pass == null || cpass == null || email == null || cemail == null || user == null) {
alert("fill all columns");
return false;
}
Dan bagaimana saya bisa menemukan kesalahan dalam program JavaScript saya?
javascript
null
compare
Mahdi_Nine
sumber
sumber
null
di js harus dilakukan dengan operator yang ketat===
Jawaban:
Javascript sangat fleksibel dalam hal memeriksa nilai "null". Saya menduga Anda sebenarnya mencari string kosong, dalam hal ini kode sederhana ini akan berfungsi:
Yang akan memeriksa string kosong (
""
),null
,undefined
,false
dan nomor0
danNaN
Harap dicatat bahwa jika Anda secara khusus memeriksa angka, ini merupakan kesalahan umum untuk melewatkan
0
metode ini, dannum !== 0
lebih disukai (ataunum !== -1
atau~num
(kode hack yang juga memeriksa-1
)) untuk fungsi yang kembali-1
, misalnyaindexOf
)sumber
!
atau!!
untuk mengujinull
atauundefined
pada data yang biasanya numerik kecuali Anda juga ingin membuang nilai 0.0
...". Saya percaya jawaban ini sangat sesuai untuk pertanyaan sebagaimana diberikan konteks (yang saya simpulkan adalah "nama pengguna, kata sandi, email"), mereka tidak memeriksa0
nilai. Namun, mengingat popularitas pertanyaan dan jawaban ini, saya setuju bahwa ada baiknya disebutkan dalam jawaban itu sendiri.Untuk memeriksa null, secara spesifik Anda akan menggunakan ini:
Tes ini akan HANYA lulus untuk
null
dan tidak akan lulus untuk""
,undefined
,false
,0
, atauNaN
.Selain itu, saya telah memberikan pemeriksaan absolut untuk setiap nilai "false-like" (yang akan mengembalikan nilai true
!variable
).Catatan, untuk beberapa pemeriksaan absolut, Anda harus menerapkan penggunaan
absolutely equals: ===
dantypeof
.Saya telah membuat JSFiddle di sini untuk menunjukkan semua tes individu berfungsi
Ini adalah output dari setiap cek:
Seperti yang Anda lihat, ini sedikit lebih sulit untuk diuji
NaN
;sumber
===
kesetaraan yang ketat? Terima kasih. Juga untuk tes NaN yang dapat Anda gunakanisNaN(value)
yang akan kembalitrue
hanya jika variabel sama dengan NaN.variable === null
tetapi bukan tipe "objek"? Jika tidak, mengapa tidak menyederhanakan cekvariable === null
, membuang konjungsi kedua? Terima kasih.variable === null
yang baru saja saya uji di sini di JSFiddle ini . Alasan saya juga menggunakan variabel `&& typeof === 'object'` tidak hanya untuk mengilustrasikan fakta menarik bahwanull
nilai adalah typeofobject
, tetapi juga untuk mengikuti aliran pemeriksaan lainnya. Tapi ya, sebagai kesimpulan, Anda aman untuk digunakan secara sederhanavariable === null
.ganti saja
==
dengan===
di semua tempat.==
adalah perbandingan kesetaraan yang longgar atau abstrak===
adalah perbandingan kesetaraan yang ketatLihat artikel MDN tentang perbandingan kesetaraan dan kesamaan untuk lebih detail.
sumber
undefined
tidaknull
. Kalau tidak, itu akan menyebabkan banyak perilaku yang tidak terduga. Umumnya jika Anda tertarik pada nilai-nilai ininull
/undefined
tetapi tidak palsu, gunakan==
(salah satu dari beberapa kasus ketika Anda harus melakukannya).undefined
bukannull
: stackoverflow.com/a/5076962/753237Operator kesetaraan yang ketat: -
Kami dapat memeriksa nol dengan
===
Hanya dengan menggunakan
if
akan bernilai true jika nilainya tidak :
sumber
Peningkatan atas jawaban yang diterima dengan secara eksplisit memeriksa
null
tetapi dengan sintaks yang disederhanakan:sumber
Pertama, Anda memiliki pernyataan pengembalian tanpa badan fungsi. Kemungkinannya adalah bahwa itu akan menimbulkan kesalahan.
Cara yang lebih bersih untuk melakukan pemeriksaan Anda adalah dengan hanya menggunakan! operator:
sumber
Anda bisa menggunakan try catch akhirnya
Anda juga bisa melakukan
throw
kesalahan sendiri. Lihat ini .sumber
Dalam JavaScript, tidak ada string yang sama dengan
null
.Mungkin Anda diharapkan
pass == null
benar ketikapass
string kosong karena Anda menyadari bahwa operator kesetaraan longgar==
melakukan jenis paksaan jenis tertentu.Misalnya, ungkapan ini benar:
Sebaliknya, operator kesetaraan yang ketat
===
mengatakan bahwa ini salah:Mengingat itu
''
dan0
secara longgar sama, Anda mungkin bisa menduga itu''
dannull
secara longgar sama. Namun, tidak demikian.Ungkapan ini salah:
Hasil membandingkan sembarang string
null
adalah salah. Karena itu,pass == null
dan semua tes Anda yang lain selalu salah, dan pengguna tidak pernah mendapat peringatan.Untuk memperbaiki kode Anda, bandingkan setiap nilai dengan string kosong:
Jika Anda yakin itu
pass
adalah string,pass == ''
juga akan berfungsi karena hanya string kosong yang sama dengan string kosong. Di sisi lain, beberapa ahli mengatakan bahwa ini adalah praktik yang baik untuk selalu menggunakan kesetaraan ketat dalam JavaScript kecuali Anda secara spesifik ingin melakukan pemaksaan tipe yang dilakukan oleh operator kesetaraan longgar.Jika Anda ingin tahu pasangan nilai apa yang secara longgar setara, lihat tabel "perbandingan kesamaan" di artikel Mozilla tentang topik ini .
sumber
untuk memeriksa undefined dan null dalam javascript Anda hanya perlu menulis yang berikut ini:
sumber
Ini adalah komentar pada solusi WebWanderer mengenai memeriksa NaN (saya belum punya cukup perwakilan untuk meninggalkan komentar resmi). Solusinya berbunyi sebagai
tetapi ini akan gagal untuk bilangan rasional yang akan membulatkan ke
0
, sepertivariable = 0.1
. Tes yang lebih baik adalah:sumber
parseInt
keparseFloat
(yang seharusnya sudah jelas bagi saya di tempat pertama). Saya menghindari menggunakanisNan
fungsi karena saya merasa seolah-olah banyak pengembang melihat fungsi sepertiisNaN
semacam "kotak ajaib" yang nilai-nilai masuk dan booleans keluar, dan saya ingin uji lebih mendalam. Tapi ya, tes yang Anda sarankan akan bekerja dan baik-baik saja untuk digunakan. Maaf saya tidak melihat posting Anda sampai sekarang.isNaN
juga, saya bisa mendukung logika itu. Ada juga metode Underscore.js, yang tampaknya bahkan lebih membingungkan / blackbox, tetapi tetap perlu dicatat karena ia memanfaatkannyaNaN !== NaN
.Object.prototype.toString.call(variable) === '[object Number]' && variable !== +variable
Sebenarnya saya pikir Anda mungkin perlu menggunakan
if (value !== null || value !== undefined)
karena jika Anda menggunakanif (value)
Anda juga dapat memfilter 0 atau nilai yang salah.Pertimbangkan dua fungsi ini:
Dalam situasi saya, saya hanya perlu memeriksa apakah nilainya nol dan tidak terdefinisi dan saya tidak ingin menyaring
0
ataufalse
atau''
nilai. jadi saya menggunakan tes kedua, tetapi Anda mungkin perlu menyaringnya juga yang dapat menyebabkan Anda menggunakan tes pertama.sumber
Saya menemukan cara lain untuk menguji apakah nilainya nol:
null
bertindak sebagainumber
danobject
pada saat yang sama. Membandingkannull >= 0
ataunull <= 0
menghasilkantrue
. Membandingkannull === 0
ataunull > 0
ataunull < 0
akan menghasilkan false. Tetapi sepertinull
juga objek kita dapat mendeteksinya sebagai null.Saya membuat fungsi yang lebih kompleks natureof penyihir akan melakukan lebih baik dari typeof dan bisa dikatakan jenis apa untuk memasukkan atau terus dikelompokkan
sumber
Saya membuat fungsi yang sangat sederhana ini bekerja dengan sangat baik:
Rute adalah rantai nilai apa pun yang dapat meledak. Saya menggunakannya untuk jQuery / cheerio dan objek dan semacamnya.
Contoh 1: objek sederhana seperti ini
const testObj = {items: [{ val: 'haya' }, { val: null }, { val: 'hum!' }];};
.Tapi itu bisa menjadi benda yang sangat besar yang bahkan belum kita buat. Jadi saya melewati itu:
Tentu saja jika Anda mau, Anda dapat menggunakan
null
atau'No value'
... Apa pun yang sesuai dengan kebutuhan Anda.Biasanya kueri DOM atau pemilih jQuery dapat menimbulkan kesalahan jika tidak ditemukan. Tetapi menggunakan sesuatu seperti:
sumber
Anda dapat menggunakan modul lodash untuk memeriksa nilainya nol atau tidak terdefinisi
Tautan referensi: https://lodash.com/docs/#isNil
sumber
Ini tidak akan berfungsi jika nilai Boolean berasal dari DB untuk contoh:
sumber
AFAIK dalam JAVASCRIPT ketika suatu variabel dideklarasikan tetapi belum menetapkan nilainya, tipenya adalah
undefined
. sehingga kita dapat memeriksa variabel bahkan jika itu akan menjadiobject
memegang beberapa contoh di tempat nilai .buat metode pembantu untuk memeriksa nullity yang kembali
true
dan menggunakannya dalam API Anda.fungsi helper untuk memeriksa apakah variabel kosong:
coba-tangkap panggilan API luar biasa:
beberapa kasus uji:
sumber
isEmpty
Fungsi ini berperilaku persis seperti!
. Tidak perlu menemukan fungsi. Lakukan sajaif (!pass || !cpass || !email ...)
. (Yang sudah ditunjukkan dalam jawaban yang diterima.) Dan menurut komentar WebWanderer, bagian tengah dari postingan ini, "coba-coba panggilan API luar biasa", tampaknya tidak relevan dengan pertanyaan ini. Tolong jelaskan maksud Anda - kapan itu berguna? Bagaimana hubungannya dengan pertanyaan itu?Memeriksa kondisi kesalahan:
sumber
Coba ini:
sumber
if (variable === null)
? Seseorang juga sudah memberikan jawaban itu tahun lalu: stackoverflow.com/a/27550756/218196 .