Saya menemukan kode berikut:
function test(data) {
if (data != null && data !== undefined) {
// some code here
}
}
Saya agak baru mengenal JavaScript, tetapi, dari pertanyaan lain yang saya baca di sini, saya mendapat kesan bahwa kode ini tidak masuk akal.
Anda akan mendapatkan kesalahan jika Anda mengakses variabel yang tidak ditentukan dalam konteks apa pun selaintypeof.
Pembaruan: Jawaban (kutipan) di atas mungkin menyesatkan. Itu harus mengatakan «variabel yang tidak dideklarasikan» , alih-alih «variabel yang tidak ditentukan» .
Seperti yang saya temukan, dalam jawaban oleh Ryan ♦ , maerics , dan nwellnhof , bahkan ketika tidak ada argumen yang disediakan untuk suatu fungsi, variabelnya untuk argumen selalu dideklarasikan. Fakta ini juga membuktikan salah item pertama dalam daftar di bawah ini.
Dari pemahaman saya, skenario berikut mungkin dialami:
Fungsi dipanggil tanpa argumen, sehingga membuatdatavariabel tidak terdefinisi, dan meningkatkan kesalahandata != null.Fungsi dipanggil secara khusus dengan
null(atauundefined), sebagai argumennya, dalam hal inidata != nullsudah melindungi kode bagian dalam, menjadikannya&& data !== undefinedtidak berguna.Fungsi dipanggil dengan argumen non-nol, dalam hal ini akan melewati keduanya
data != nulldandata !== undefined.
T: Apakah pemahaman saya benar?
Saya sudah mencoba yang berikut ini, di konsol Firefox:
--
[15:31:31.057] false != null
[15:31:31.061] true
--
[15:31:37.985] false !== undefined
[15:31:37.989] true
--
[15:32:59.934] null != null
[15:32:59.937] false
--
[15:33:05.221] undefined != null
[15:33:05.225] false
--
[15:35:12.231] "" != null
[15:35:12.235] true
--
[15:35:19.214] "" !== undefined
[15:35:19.218] true
Saya tidak bisa menemukan kasus di mana data !== undefined setelahnya data != null mungkin ada gunanya.
if(data)berarti dia tidak bisa lulus falseatau 0sebagai nilai untuk data.
if(typeof someUndefVar == whatever) -- worksdan if(someUnderVar) -- error.
data !== null && data !== undefined, yang setara dengan data != nullyang setara dengan data != undefined. Bentuk sebelumnya cenderung disukai karena lebih eksplisit tentang kondisi, sedangkan akan mudah untuk mengabaikan keduanya nulldan undefinedsedang diperiksa dengan dua kondisi selanjutnya.
undefinedIMO adalah bau kode. Ini bukan kata kunci yang dilindungi seperti null, ini adalah variabel yang tidak terdefinisi. Ini benar-benar valid dan akan memecahkan kode Anda:undefined = 1



if (data). Ini adalah cara Javascript mnemonic untuk memeriksa apakahdatavariabel bernilai true.undefined,,nullfalse, 0, string kosong, array kosong, dan (?) objek tanpa properti bernilai false, sisanya benar.