Aşağıda bir değişken olup olmadığını kontrol etmek için JavaScript'te iki yol olduğunu biliyorum null
, ama hangi en iyi uygulama kullanmak için kafam karıştı.
Yapmalı mıyım:
if (myVar) {...}
veya
if (myVar !== null) {...}
Aşağıda bir değişken olup olmadığını kontrol etmek için JavaScript'te iki yol olduğunu biliyorum null
, ama hangi en iyi uygulama kullanmak için kafam karıştı.
Yapmalı mıyım:
if (myVar) {...}
veya
if (myVar !== null) {...}
Yanıtlar:
Eşdeğer değiller. İlk önce aşağıdaki blok yürütülür if
halinde ifadesi myVar
olduğunu truthy (yani değerlendirir true
durumunda, ikinci blok çalıştırmak ise, bir koşullu olarak) myVar
başka herhangi bir değerdir null
.
JavaScript'te doğru olmayan tek değerler aşağıdaki gibidir ( yanlış değerler olarak da bilinir ):
null
undefined
0
""
(boş dize)false
NaN
Bir değişkenin NULL olmadığını şu şekilde test edebilirsiniz:
if (myVar !== null) {...}
myVar boş değilse blok yürütülür .. myVar tanımsız veya yanlış veya 0
veya NaN
veya başka bir şey olursa yürütülür .
("")
ve tanımsız olup olmadığını kontrol etmez . Benim keman referans olarak bakın: jsfiddle.net/b0tm7yaf
Bu yazıyı okuyun: http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/
Genel olarak JavaScript için bazı güzel ipuçları var, ancak bahsettiği bir şey, null gibi kontrol etmeniz gerektiğidir:
if(myvar) { }
Ayrıca, farkına varamayacağınız 'falsey' olarak kabul edilen şeylerden de bahseder.
if(myVar) { code }
sadece myVar
şuna eşit olduğunda çalıştırılamaz : false, 0, "", null, undefined, NaN
ya da hiç tanımlanmamış değişkenmyVar
(daha sonra kod yürütmeyi durdurur ve istisna atar).if(myVar !== null) {code}
sadece myVar
ona eşit olduğunda null
veya onu hiç tanımlamadığınızda (istisna atar) çalıştırılmaz.Burada hepsi var ( src )
Eğer
== (olumsuzlaması ! = )
=== (olumsuzlaması ! == )
Daha yeni karşılaştığım başka bir senaryo daha var.
Bir ajax çağrısı yaptım ve veri bir dize formatında null olarak geri aldım. Ben böyle kontrol etmek zorunda kaldı:
if(value != 'null'){}
Yani, null, gerçekten null olmak yerine "null" yazan bir dizedir.
DÜZENLEME: Ben o yolu olarak bu satmıyorum anlaşılmalıdır gerektiğini yapılabilir. Bunun yapılabilecek tek yol olduğu bir senaryom vardı. Neden olduğundan emin değilim ... belki de arka ucu yazan adam verileri yanlış sunuyordu, ama ne olursa olsun, bu gerçek hayat. Bunun doğru olmadığını anlayan biri tarafından aşağı oylanan ve daha sonra gerçekten yardımcı olduğu biri tarafından yukarı oylanan görmek sinir bozucu.
null
dizelerle karşılaştırmak yerine değerinizi ayrıştırın .
value = JSON.parse(value)
, basit ve uygun value != null
testi daha iyi yapmalı ve kullanmalısınız
myVar
null ise , blok başka bir şekilde yürütülmezse yürütülür.
if (myVar != null) {...}
'null'
değil, özel değer null
.
Burada listelediğiniz iki koşullu ifade birbirinden daha iyi değildir. Kullanımınız duruma bağlıdır. 2. örnekte bu arada bir yazım hatası var. Ünlem işaretinden sonra yalnızca bir eşittir işareti olmalıdır.
İlk örnek, myVar'daki değerin doğru olup olmadığını belirler ve {...}
İkinci örnek, myVar değerinin null değerine eşit olmadığını değerlendirir ve bu durumda doğruysa kodunuzu {...} içinde yürütür
Daha fazla teknik için koşullu ifadelere bakmanızı öneririm. Onlara aşina olduktan sonra, onlara ne zaman ihtiyacınız olduğuna karar verebilirsiniz.
=
çok önemlidir ve soru için büyük bir fark yaratır. Belki JavaScript'in varlığının !==
ve ===
operatörlerinin farkında değilsinizdir ?