Bagaimana cara memeriksa variabel jika itu
null
atauundefined
dan apa perbedaan antaranull
danundefined
?Apa perbedaan antara
==
dan===
(sulit untuk mencari Google untuk "===")?
javascript
null
undefined
MUG4N
sumber
sumber
==
dan dijelaskan dengan===
baik di sini .Jawaban:
Apakah variabel
null
:... tetapi perhatikan yang terakhir juga akan benar jika
a
adaundefined
.Apakah itu
undefined
:... tapi sekali lagi, perhatikan bahwa yang terakhir tidak jelas; itu juga akan benar kalau
a
adanull
.Sekarang, terlepas dari hal di atas, cara yang biasa untuk memeriksa itu adalah dengan menggunakan fakta bahwa mereka palsu :
Ini didefinisikan oleh ToBoolean dalam spec.
Keduanya adalah nilai yang biasanya digunakan untuk menunjukkan tidak adanya sesuatu.
undefined
adalah yang lebih umum, digunakan sebagai nilai default variabel sampai mereka diberi nilai lain, sebagai nilai argumen fungsi yang tidak disediakan ketika fungsi dipanggil, dan sebagai nilai yang Anda dapatkan ketika Anda meminta objek untuk properti yang tidak dimilikinya. Tetapi itu juga dapat secara eksplisit digunakan dalam semua situasi itu. (Ada perbedaan antara objek yang tidak memiliki properti, dan memiliki properti dengan nilaiundefined
; ada perbedaan antara memanggil fungsi dengan nilaiundefined
untuk argumen, dan meninggalkan argumen itu sepenuhnya.)null
sedikit lebih spesifik daripadaundefined
: Ini adalah referensi objek kosong. JavaScript diketik secara longgar, tentu saja, tetapi tidak semua hal yang berinteraksi dengan JavaScript diketik secara longgar. Jika API seperti DOM di browser membutuhkan referensi objek yang kosong, kami menggunakannull
, bukanundefined
. Dan juga,getElementById
operasi DOM mengembalikan referensi objek - baik yang valid (jika menemukan elemen DOM), ataunull
(jika tidak).Menariknya (atau tidak), mereka tipe mereka sendiri. Artinya,
null
adalah satu-satunya nilai dalam tipe Null, danundefined
merupakan satu-satunya nilai dalam tipe Undefined.Satu-satunya perbedaan di antara mereka adalah yang
==
akan melakukan tipe paksaan untuk mencoba mendapatkan nilai yang cocok, dan===
tidak mau. Jadi misalnya"1" == 1
benar, karena"1"
paksaan untuk1
. Tetapi"1" === 1
itu salah , karena tipenya tidak cocok. ("1" !== 1
Benar.) Langkah pertama (nyata)===
adalah "Apakah jenis operan sama?" dan jika jawabannya "tidak", hasilnya adalahfalse
. Jika tipenya sama, ia melakukan apa yang==
dilakukannya.Jenis paksaan menggunakan aturan yang cukup rumit dan dapat memberikan hasil yang mengejutkan (misalnya,
"" == 0
benar).Lebih banyak di spec:
==
, juga disebut kesetaraan "longgar")===
)sumber
if (a) { ... }
akan berarti "jikaa
itu benar," di mana "benar" adalah nilai yang tidak nol, tidak nol, tidak terdefinisi, tidak palsu, tidak kosong. :-)null
bukan objek , itu referensi objek yang berarti "tidak ada objek". Ini penting, karena yang digunakan dengan antarmuka yang disediakan oleh host ketika mereka memberikan referensi objek tetapi tidak memiliki satu untuk menyediakan (misalnya,node.nextSibling
kapannode
elemen terakhir dalam induknya, ataugetElementById
ketika tidak ada elemen dengan ID itu). Teknologi yang digunakan oleh tuan rumah untuk ini mungkin tidak sefleksibel JavaScript adalah tentang jenis variabel / properti, jadi itu perlu untuk memiliki objeknull
ref (sebagai lawan dariundefined
).typeof null
mengembalikan "objek" masuk akal. Satu-satunya nilai lain yang masuk akal adalah "nol", karena pasti mengembalikan sesuatu yang berbedatypeof undefined
. null mewakili referensi objek nol, yang, paling tidak, berarti variabel yang menahannya dimaksudkan untuk beberapa jenis 'objek'. Jika itu adalah kesalahan, itu adalah kesalahan yang baik. Bagaimanapun, dalam hal jawabannya, tip tentangundefined
! ==undefined
selama skrip lintas-jendela baik untuk diketahui, terutama untuk tujuan debugging.Perbedaannya halus.
Dalam JavaScript,
undefined
variabel adalah variabel yang tidak pernah dideklarasikan, atau tidak pernah diberi nilai. Katakanlah Anda menyatakanvar a;
misalnya, makaa
akan menjadiundefined
, karena tidak pernah diberi nilai apa pun.Tetapi jika Anda kemudian menetapkan
a = null;
makaa
sekarang akannull
. Dalam JavaScriptnull
adalah sebuah objek (cobatypeof null
di konsol JavaScript jika Anda tidak percaya kepada saya), yang berarti bahwa null adalah sebuah nilai (bahkan sebenarnyaundefined
adalah sebuah nilai).Contoh:
Ini terbukti bermanfaat dalam argumen fungsi. Anda mungkin ingin memiliki nilai default, tetapi anggap null diterima. Dalam hal ini Anda dapat melakukan:
Jika Anda menghilangkan
optional
parameterdoSomething(1, 2) then
opsional akan menjadi"three"
string tetapi jika Anda lulusdoSomething(1, 2, null)
maka opsional akan menjadinull
.Adapun pembanding yang sama
==
dan benar-benar sama===
, yang pertama adalah tipe lemah, sementara benar-benar sama juga memeriksa jenis nilai. Itu berarti0 == "0"
akan kembali benar; sementara0 === "0"
akan mengembalikan false, karena angka bukan string.Anda dapat menggunakan operator tersebut untuk memeriksa antara
undefined
sebuahnull
. Sebagai contoh:Kasus terakhir menarik, karena memungkinkan Anda untuk memeriksa apakah suatu variabel tidak terdefinisi atau nol dan tidak ada yang lain:
sumber
Spek adalah tempat untuk mencari jawaban penuh untuk pertanyaan-pertanyaan ini. Berikut ringkasannya:
x
, Anda dapat:null
menggunakan perbandingan langsung===
. Contoh:x === null
undefined
dengan salah satu dari dua metode dasar: perbandingan langsung denganundefined
atautypeof
. Karena berbagai alasan , saya lebih sukatypeof x === "undefined"
.null
danundefined
dengan menggunakan==
dan bergantung pada aturan paksaan jenis yang sedikit misterius yang berartix == null
melakukan apa yang Anda inginkan.==
dan===
adalah bahwa jika operan memiliki tipe yang berbeda,===
akan selalu kembalifalse
sementara==
akan mengubah satu atau kedua operan menjadi tipe yang sama menggunakan aturan yang mengarah pada beberapa perilaku yang sedikit tidak intuitif. Jika operan memiliki tipe yang sama (misalnya keduanya adalah string, seperti dalamtypeof
perbandingan di atas),==
dan===
akan berperilaku sama persis.Lebih banyak membaca:
sumber
cukup periksa apakah suatu variabel memiliki nilai yang valid seperti ini:
itu akan mengembalikan true jika variabel tidak mengandung:
sumber
tidak terdefinisi
Itu berarti variabel belum diinternisasi.
Contoh:
sama dengan (==)
Hanya memeriksa nilai sama dengan bukan tipe data.
Contoh:
Karena hanya memeriksa nilai.
Sama dengan Ketat (===)
Cek nilai dan tipe data harus sama.
Contoh:
Karena memeriksa datatype x adalah tipe primitif dan y adalah objek boolean.
sumber
Iklan 1.
null
bukan pengidentifikasi untuk properti objek global, sepertiundefined
dapatTampilkan cuplikan kode
Iklan 2.
===
Nilai dan tipe cek. The==
dont memerlukan jenis yang sama dan membuat konversi implisit sebelum perbandingan (menggunakan.valueOf()
dan.toString()
). Di sini Anda memiliki semua ( src ):jika
== (negasinya ! = )
=== (negasinya ! == )
sumber
document.all == null
dandocument.all !== null
Jika pemeriksaan (logis) Anda adalah negasi (!) Dan Anda ingin menangkap kedua JS
null
danundefined
(karena Peramban yang berbeda akan memberi Anda hasil yang berbeda), Anda akan menggunakan perbandingan yang kurang ketat: misalnya:Ini akan menangkap keduanya
null
danundefined
sumber
Coba Dengan Logika Berbeda . Anda dapat menggunakan kode di bawah ini untuk memeriksa keempat (4) kondisi untuk validasi seperti tidak nol, tidak kosong, tidak terdefinisi dan tidak nol hanya menggunakan kode ini (! (! (Variabel))) dalam javascript dan jquery.
}
sumber