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 membuatdata
variabel tidak terdefinisi, dan meningkatkan kesalahandata != null
.Fungsi dipanggil secara khusus dengan
null
(atauundefined
), sebagai argumennya, dalam hal inidata != null
sudah melindungi kode bagian dalam, menjadikannya&& data !== undefined
tidak berguna.Fungsi dipanggil dengan argumen non-nol, dalam hal ini akan melewati keduanya
data != null
dandata !== 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 false
atau 0
sebagai nilai untuk data
.
if(typeof someUndefVar == whatever) -- works
dan if(someUnderVar) -- error
.
data !== null && data !== undefined
, yang setara dengan data != null
yang setara dengan data != undefined
. Bentuk sebelumnya cenderung disukai karena lebih eksplisit tentang kondisi, sedangkan akan mudah untuk mengabaikan keduanya null
dan undefined
sedang diperiksa dengan dua kondisi selanjutnya.
undefined
IMO 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 apakahdata
variabel bernilai true.undefined
,,null
false, 0, string kosong, array kosong, dan (?) objek tanpa properti bernilai false, sisanya benar.