Aşağıdaki kod rastladım:
function test(data) {
if (data != null && data !== undefined) {
// some code here
}
}
JavaScript için biraz yeniyim, ancak burada okuduğum diğer sorulardan, bu kodun çok mantıklı olmadığı izlenimi altındayım.
Dışında herhangi bir bağlamda tanımlanmamış bir değişkene erişirseniz hata alırsınıztypeof
.
Güncelleme: Yukarıdaki (alıntı) cevabı yanıltıcı olabilir. Bu demeliyim «bildirilmemiş bir değişkeni» yerine, «tanımlanmamış bir değişkene» .
Bildiğim gibi, Ryan ♦ , maerics ve nwellnhof'un cevaplarında , bir işleve hiçbir argüman verilmemiş olsa bile, argümanları için değişkenleri her zaman bildirilir. Bu gerçek, aşağıdaki listedeki ilk öğenin de yanlış olduğunu kanıtlamaktadır.
Anladığım kadarıyla, aşağıdaki senaryolar yaşanabilir:
İşlev bağımsız değişken olmadan çağrıldı, böylecedata
tanımsız bir değişken oluşturuldu ve bir hata oluştudata != null
.İşlev, bağımsız değişkeni olarak
null
(veyaundefined
) ile çağrıldı , bu durumdadata != null
iç kodu zaten korur ve&& data !== undefined
işe yaramaz hale getirir .İşlev null olmayan bir argümanla çağrıldı, bu durumda önemsiz bir şekilde hem
data != null
ve hem de geçecekdata !== undefined
.
S: Anladığım doğru mu?
Firefox'un konsolunda aşağıdakileri denedim:
--
[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
Ben dava çözemiyorum data !== undefined
sonra data != null
herhangi bir kullanım olabilir.
if(data)
, geçemeyeceği false
veya 0
değer olarak vereceği anlamına gelir data
.
if(typeof someUndefVar == whatever) -- works
ve if(someUnderVar) -- error
.
data !== null && data !== undefined
eşdeğer olan data != null
eşdeğerdir hangi data != undefined
. O koşulları hakkında daha açık olduğu gibi her iki olduğunu gözden kaçırmak kolay olurdu oysa eski form tercih edilme eğilimi null
ve undefined
daha sonra iki koşullarla kontrol ediliyor.
undefined
IMO bir kod kokusudur. Bu, korumalı bir anahtar kelime değil null
, tanımlanmamış bir değişkendir. Bu tamamen geçerli ve kodunuzu kıracak:undefined = 1
if (data)
.data
Değişkenin true olarak değerlendirilip değerlendirilmediğini kontrol etmenin anımsatıcı Javascript yolu .undefined
,,null
false, 0, boş dize, boş dizi ve hiçbir özelliği olmayan (?) nesnesi false olarak değerlendirilir, gerisi doğrudur.