"Değeridir için ben test etmek için en etkili yolu düşünmek null
veya undefined
edilir"
if ( some_variable == null ){
// some_variable is either null or undefined
}
Yani bu iki çizgi eşdeğerdir:
if ( typeof(some_variable) !== "undefined" && some_variable !== null ) {}
if ( some_variable != null ) {}
Not 1
Soruda belirtildiği gibi, kısa varyant some_variable
bildirilmiş , aksi takdirde bir ReferenceError atılacaktır. Bununla birlikte, birçok kullanım durumunda bunun güvenli olduğunu varsayabilirsiniz:
isteğe bağlı bağımsız değişkenleri kontrol edin:
function(foo){
if( foo == null ) {...}
varolan bir nesnenin özelliklerini denetleme
if(my_obj.foo == null) {...}
Öte yandan typeof
, kayıt dışı küresel değişkenlerle başa çıkabilir (sadece geri döner undefined
). Yine de, Alsciende'nin açıkladığı gibi, bu durumlar iyi nedenlerle en aza indirilmelidir.
Not 2
Bu - daha kısa - varyant eşdeğer değildir :
if ( !some_variable ) {
// some_variable is either null, undefined, 0, NaN, false, or an empty string
}
yani
if ( some_variable ) {
// we don't get here if some_variable is null, undefined, 0, NaN, false, or ""
}
Not 3
Genel olarak bunun ===
yerine kullanılması önerilir ==
. Önerilen çözüm bu kuralın bir istisnasıdır. JSHint sözdizimi denetleyicisi bile sağlareqnull
bu nedenle seçeneği.
Gönderen jQuery stil kılavuzu :
== lehine katı eşitlik kontrolleri (===) kullanılmalıdır. Tek istisna, null yoluyla tanımsız ve null olup olmadığının kontrol edilmesidir.
// Check for both undefined and null values, for some important reason.
undefOrNull == null;
if(some_variable) { ... }
eğer çalıştırmazsome_variable
isefalse
ya0
... ya