Bagaimana cara memeriksa variabel jika itu
null
atauundefined
dan apa perbedaan antaranull
danundefined
?Apa perbedaan antara
==
dan===
(sulit untuk mencari Google untuk "===")?
Bagaimana cara memeriksa variabel jika itu null
atau undefined
dan apa perbedaan antara null
dan undefined
?
Apa perbedaan antara ==
dan ===
(sulit untuk mencari Google untuk "===")?
Jawaban:
Bagaimana cara saya memeriksa variabel jika
null
atauundefined
...
Apakah variabel null
:
if (a === null)
// or
if (a == null) // but see note below
... tetapi perhatikan yang terakhir juga akan benar jika a
ada undefined
.
Apakah itu undefined
:
if (typeof a === "undefined")
// or
if (a === undefined)
// or
if (a == undefined) // but see note below
... tapi sekali lagi, perhatikan bahwa yang terakhir tidak jelas; itu juga akan benar kalau a
ada null
.
Sekarang, terlepas dari hal di atas, cara yang biasa untuk memeriksa itu adalah dengan menggunakan fakta bahwa mereka palsu :
if (!a) {
// `a` is falsey, which includes `undefined` and `null`
// (and `""`, and `0`, and `NaN`, and [of course] `false`)
}
Ini didefinisikan oleh ToBoolean dalam spec.
... dan apa perbedaan antara
null
danundefined
?
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 nilai undefined
; ada perbedaan antara memanggil fungsi dengan nilai undefined
untuk argumen, dan meninggalkan argumen itu sepenuhnya.)
null
sedikit lebih spesifik daripada undefined
: 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 menggunakan null
, bukan undefined
. Dan juga, getElementById
operasi DOM mengembalikan referensi objek - baik yang valid (jika menemukan elemen DOM), atau null
(jika tidak).
Menariknya (atau tidak), mereka tipe mereka sendiri. Artinya, null
adalah satu-satunya nilai dalam tipe Null, dan undefined
merupakan satu-satunya nilai dalam tipe Undefined.
Apa perbedaan antara "==" dan "==="
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 untuk 1
. 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 adalah false
. 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")===
)if (a) { ... }
akan berarti "jika a
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
kapan node
elemen terakhir dalam induknya, atau getElementById
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 objek null
ref (sebagai lawan dari undefined
).
typeof null
mengembalikan "objek" masuk akal. Satu-satunya nilai lain yang masuk akal adalah "nol", karena pasti mengembalikan sesuatu yang berbeda typeof 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 tentang undefined
! == 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 menyatakan var a;
misalnya, maka a
akan menjadi undefined
, karena tidak pernah diberi nilai apa pun.
Tetapi jika Anda kemudian menetapkan a = null;
maka a
sekarang akan null
. Dalam JavaScript null
adalah sebuah objek (coba typeof null
di konsol JavaScript jika Anda tidak percaya kepada saya), yang berarti bahwa null adalah sebuah nilai (bahkan sebenarnya undefined
adalah sebuah nilai).
Contoh:
var a;
typeof a; # => "undefined"
a = null;
typeof null; # => "object"
Ini terbukti bermanfaat dalam argumen fungsi. Anda mungkin ingin memiliki nilai default, tetapi anggap null diterima. Dalam hal ini Anda dapat melakukan:
function doSomething(first, second, optional) {
if (typeof optional === "undefined") {
optional = "three";
}
// do something
}
Jika Anda menghilangkan optional
parameter doSomething(1, 2) then
opsional akan menjadi "three"
string tetapi jika Anda lulus doSomething(1, 2, null)
maka opsional akan menjadi null
.
Adapun pembanding yang sama ==
dan benar-benar sama ===
, yang pertama adalah tipe lemah, sementara benar-benar sama juga memeriksa jenis nilai. Itu berarti 0 == "0"
akan kembali benar; sementara 0 === "0"
akan mengembalikan false, karena angka bukan string.
Anda dapat menggunakan operator tersebut untuk memeriksa antara undefined
sebuah null
. Sebagai contoh:
null === null # => true
undefined === undefined # => true
undefined === null # => false
undefined == null # => true
Kasus terakhir menarik, karena memungkinkan Anda untuk memeriksa apakah suatu variabel tidak terdefinisi atau nol dan tidak ada yang lain:
function test(val) {
return val == null;
}
test(null); # => true
test(undefined); # => true
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 dengan undefined
atau typeof
. Karena berbagai alasan , saya lebih suka typeof x === "undefined"
.null
dan undefined
dengan menggunakan ==
dan bergantung pada aturan paksaan jenis yang sedikit misterius yang berarti x == null
melakukan apa yang Anda inginkan.==
dan ===
adalah bahwa jika operan memiliki tipe yang berbeda, ===
akan selalu kembali false
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 dalam typeof
perbandingan di atas), ==
dan ===
akan berperilaku sama persis.Lebih banyak membaca:
Bagaimana cara saya memeriksa variabel apakah itu nol atau tidak terdefinisi
cukup periksa apakah suatu variabel memiliki nilai yang valid seperti ini:
if(variable)
itu akan mengembalikan true jika variabel tidak mengandung:
tidak terdefinisi
Itu berarti variabel belum diinternisasi.
Contoh:
var x;
if(x){ //you can check like this
//code.
}
sama dengan (==)
Hanya memeriksa nilai sama dengan bukan tipe data.
Contoh:
var x = true;
var y = new Boolean(true);
x == y ; //returns true
Karena hanya memeriksa nilai.
Sama dengan Ketat (===)
Cek nilai dan tipe data harus sama.
Contoh:
var x = true;
var y = new Boolean(true);
x===y; //returns false.
Karena memeriksa datatype x adalah tipe primitif dan y adalah objek boolean.
Iklan 1. null
bukan pengidentifikasi untuk properti objek global, seperti undefined
dapat
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 ! == )
document.all == null
dandocument.all !== null
Jika pemeriksaan (logis) Anda adalah negasi (!) Dan Anda ingin menangkap kedua JS null
dan undefined
(karena Peramban yang berbeda akan memberi Anda hasil yang berbeda), Anda akan menggunakan perbandingan yang kurang ketat: misalnya:
var ItemID = Item.get_id();
if (ItemID != null)
{
//do stuff
}
Ini akan menangkap keduanya null
danundefined
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.
function myFunction() {
var data; //The Values can be like as null, blank, undefined, zero you can test
if(!(!(data)))
{
//If data has valid value
alert("data "+data);
}
else
{
//If data has null, blank, undefined, zero etc.
alert("data is "+data);
}
}
==
dan dijelaskan dengan===
baik di sini .