Saya tahu bahwa di bawah ini adalah dua cara dalam JavaScript untuk memeriksa apakah suatu variabel tidak null
, tetapi saya bingung mana yang merupakan praktik terbaik untuk digunakan.
Haruskah saya lakukan:
if (myVar) {...}
atau
if (myVar !== null) {...}
javascript
comparison
null-check
nickb
sumber
sumber
Jawaban:
Mereka tidak setara. Yang pertama akan mengeksekusi blok berikut
if
pernyataan jikamyVar
adalah truthy (yaitu mengevaluasi ketrue
dalam bersyarat), sedangkan yang kedua akan mengeksekusi blok jikamyVar
nilai apapun selainnull
.Satu-satunya nilai yang tidak benar dalam JavaScript adalah sebagai berikut (alias nilai falsy ):
null
undefined
0
""
(string kosong)false
NaN
sumber
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
0
atauNaN
atau apa pun ..sumber
("")
dan tidak terdefinisi. Lihat biola saya sebagai referensi: jsfiddle.net/b0tm7yafBaca 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:
Itu juga menyebutkan apa yang dianggap 'palsu' yang mungkin tidak Anda sadari.
sumber
if(myVar) { code }
TIDAK akan dieksekusi hanya ketikamyVar
sama dengan:false, 0, "", null, undefined, NaN
atau Anda tidak pernah mendefinisikan variabelmyVar
(kemudian mengeksekusi kode berhenti dan membuang pengecualian).if(myVar !== null) {code}
TIDAK akan dieksekusi hanya ketikamyVar
sama dengannull
atau Anda tidak pernah mendefinisikannya (melempar pengecualian).Di sini Anda memiliki semua ( src )
jika
== (negasinya ! = )
=== (negasinya ! == )
sumber
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:
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.
sumber
null
string.value = JSON.parse(value)
dan kemudian menggunakanvalue != null
tes sederhana dan tepatjika
myVar
nol maka jika blok tidak dijalankan selain itu akan dijalankan.if (myVar != null) {...}
sumber
'null'
, tetapi nilai spesialnull
.Terkadang jika itu bahkan tidak didefinisikan lebih baik disiapkan. Untuk ini saya menggunakan typeof
sumber
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.
sumber
=
sangat penting dan membuat perbedaan besar untuk pertanyaan itu. Mungkin Anda tidak mengetahui keberadaan!==
dan===
operator di JavaScript?