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 ifhalinde ifadesi myVarolduğunu truthy (yani değerlendirir truedurumunda, ikinci blok çalıştırmak ise, bir koşullu olarak) myVarbaşka herhangi bir değerdir null.
JavaScript'te doğru olmayan tek değerler aşağıdaki gibidir ( yanlış değerler olarak da bilinir ):
nullundefined0"" (boş dize)falseNaNBir 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 0veya NaNveya 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, NaNya da hiç tanımlanmamış değişkenmyVar (daha sonra kod yürütmeyi durdurur ve istisna atar).if(myVar !== null) {code}sadece myVarona eşit olduğunda nullveya 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.
nulldizelerle karşılaştırmak yerine değerinizi ayrıştırın .
value = JSON.parse(value), basit ve uygun value != nulltesti daha iyi yapmalı ve kullanmalısınız
myVarnull 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 ?