Bagaimana cara memeriksa apakah suatu variabel bukan null?


Jawaban:


399

Mereka tidak setara. Yang pertama akan mengeksekusi blok berikut ifpernyataan jika myVaradalah truthy (yaitu mengevaluasi ke truedalam bersyarat), sedangkan yang kedua akan mengeksekusi blok jika myVarnilai apapun selain null.

Satu-satunya nilai yang tidak benar dalam JavaScript adalah sebagai berikut (alias nilai falsy ):

  • null
  • undefined
  • 0
  • "" (string kosong)
  • false
  • NaN

69

Inilah cara Anda dapat menguji apakah suatu variabel bukan NULL:

if (myVar !== null) {...}

blok akan dieksekusi jika myVar tidak nol .. itu akan dieksekusi jika myVar tidak terdefinisi atau salah atau 0atau NaNatau apa pun ..


1
Dalam hal bagi mereka yang bertanya-tanya ... Ini tidak memeriksa string kosong ("")dan tidak terdefinisi. Lihat biola saya sebagai referensi: jsfiddle.net/b0tm7yaf
Barrosy

47

Baca di pos ini: http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/

Ini memiliki beberapa tips yang bagus untuk JavaScript secara umum tetapi satu hal yang disebutkannya adalah Anda harus memeriksa nol seperti:

if(myvar) { }

Itu juga menyebutkan apa yang dianggap 'palsu' yang mungkin tidak Anda sadari.


33
Pemeriksaan ini sebenarnya tidak aman. Jika myvar bernilai 0, false atau nilai falsy lainnya, tes akan gagal (jika Anda hanya ingin memeriksa bukan nol). Jadi hanya gunakan ini untuk memeriksa bukan nol jika variabel tidak pernah dapat memiliki nilai falsy lain.
Werzi2001

2
tautannya tidak lagi berfungsi. Saya menemukan salinan dari apa yang tampaknya menjadi posting di sini: appendto.com/2010/10/... Aneh, karena posting Elia (dan kode sampel) akan menyarankan bahwa dia adalah penulis, tetapi dia tidak terdaftar sebagai penulis di sana ...
halaman surat

2
Sepertinya situs itu tidak ada lagi. Akan sangat membantu jika Anda dapat memasukkan informasi dalam pos itu sendiri, bukan hanya tautan eksternal.
apraetor

Ini tidak akan berfungsi jika nilai ada tetapi 0 (nol)
zmechanic

15
  • kode di dalam Anda if(myVar) { code }TIDAK akan dieksekusi hanya ketika myVarsama dengan: false, 0, "", null, undefined, NaNatau Anda tidak pernah mendefinisikan variabel myVar(kemudian mengeksekusi kode berhenti dan membuang pengecualian).
  • kode di dalam Anda if(myVar !== null) {code}TIDAK akan dieksekusi hanya ketika myVarsama dengan nullatau Anda tidak pernah mendefinisikannya (melempar pengecualian).

Di sini Anda memiliki semua ( src )

jika

masukkan deskripsi gambar di sini

== (negasinya ! = )

masukkan deskripsi gambar di sini

=== (negasinya ! == )

masukkan deskripsi gambar di sini


9

Ada skenario lain yang mungkin saya temui.

Saya melakukan panggilan ajax dan mendapatkan kembali data sebagai null, dalam format string. Saya harus memeriksanya seperti ini:

if(value != 'null'){}

Jadi, null adalah string yang bertuliskan "null" daripada benar-benar menjadi null.

EDIT: Harus dipahami bahwa saya tidak menjual ini seperti yang seharusnya dilakukan. Saya punya skenario di mana ini adalah satu-satunya cara untuk melakukannya. Saya tidak yakin mengapa ... mungkin orang yang menulis back-end mempresentasikan data secara salah, tetapi bagaimanapun, ini adalah kehidupan nyata. Sangat frustasi melihat ini dipilih oleh seseorang yang mengerti bahwa itu tidak benar, dan kemudian dipilih oleh seseorang itu benar-benar membantu.


Alihkan nilai Anda daripada membandingkan dengan nullstring.
Bergi

1
Jawaban ini sah, apakah Anda memahami penerapannya atau tidak. Saya tidak menghargai downvoted karena memposting hal-hal yang benar-benar berfungsi. Apakah Anda memperhatikan itu memiliki suara positif sebelum Anda menyentuhnya? Itu karena itu adalah skenario nyata.
Flat Cat

3
ya, dan saya turun karena saya pikir itu solusi yang salah. Dalam hal panggilan ajax, Anda sebaiknya melakukan value = JSON.parse(value)dan kemudian menggunakan value != nulltes sederhana dan tepat
Bergi

2
Rupanya kamu tidak mengerti. Saya menyadari Anda berpikir Anda melakukannya, tetapi Anda tidak.
Flat Cat

4
Saya mengerti bahwa itu adalah solusi yang berfungsi. Tapi saya pikir itu bukan saran yang bagus, jadi tolong hormati downvote saya.
Bergi

1

jika myVarnol maka jika blok tidak dijalankan selain itu akan dijalankan.

if (myVar != null) {...}


Bukan string 'null', tetapi nilai spesial null.
Micah Walter

1

Terkadang jika itu bahkan tidak didefinisikan lebih baik disiapkan. Untuk ini saya menggunakan typeof

if(typeof(variable) !== "undefined") {
    //it exist
    if(variable !== null) {
        //and is not null
    }
    else {
        //but is null
    }
}
else {
    //it doesn't
}

-4

Dua pernyataan bersyarat yang Anda daftarkan di sini tidak lebih baik dari yang lain. Penggunaan Anda tergantung pada situasinya. Anda memiliki kesalahan ketik pada contoh ke-2. Seharusnya hanya ada satu tanda sama dengan setelah tanda seru.

Contoh pertama menentukan apakah nilai di myVar benar dan mengeksekusi kode di dalam {...}

Contoh ke-2 mengevaluasi apakah myVar tidak sama dengan nol dan jika kasus itu benar, ia akan mengeksekusi kode Anda di dalam {...}

Saya sarankan melihat pernyataan bersyarat untuk teknik lainnya. Setelah Anda terbiasa dengan mereka, Anda dapat memutuskan kapan Anda membutuhkannya.


12
Itu mungkin bukan salah ketik pada contoh kedua. Yang kedua =sangat penting dan membuat perbedaan besar untuk pertanyaan itu. Mungkin Anda tidak mengetahui keberadaan !==dan ===operator di JavaScript?
Tim Down

1
Terima kasih telah menunjukkannya. Saya langsung mengira itu salah ketik, tapi sekarang ingat apa yang belum saya lihat dan saya lupakan.
THE DOCTOR
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.