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öylecedatatanı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 != nulliç kodu zaten korur ve&& data !== undefinedişe yaramaz hale getirir .İşlev null olmayan bir argümanla çağrıldı, bu durumda önemsiz bir şekilde hem
data != nullve 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 falseveya 0değer olarak vereceği anlamına gelir data.
if(typeof someUndefVar == whatever) -- worksve if(someUnderVar) -- error.
data !== null && data !== undefinedeşdeğer olan data != nulleş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 nullve undefineddaha sonra iki koşullarla kontrol ediliyor.
undefinedIMO 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).dataDeğişkenin true olarak değerlendirilip değerlendirilmediğini kontrol etmenin anımsatıcı Javascript yolu .undefined,,nullfalse, 0, boş dize, boş dizi ve hiçbir özelliği olmayan (?) nesnesi false olarak değerlendirilir, gerisi doğrudur.