JavaScript'i kullanarak, 0'ı nasıl algılamıyor, ancak boş veya boş dizeleri algılamıyor mu? Sorunuzun BaşlıktanBu ifade 0'ı algılamamalı; Yalnızca boş veya boş dizeler
cevap
:
if(val === null || val == "")
Ben sadece bir =
boş dize ile val
-karşılaştırmak sıkı-eşitlik çalışırken unuttum görebilirsiniz: Firebug ile
if(val === null || val === "")
Test:
>>> 0 === null || 0 == ""
true
>>> 0 === null || 0 === ""
false
DÜZENLEME: açıklama yerine CMS'nin yorumuna bakın.
Oh, boş bir dize == ile 0 ile aynı mı? Garip. Teşekkürler! – Hamster
Evet; Aslında bu, === 'over' == 'tercih etmenin en büyük nedenlerinden biridir. Otomatik dönüştürme nedeniyle, "false == 0 ==" "', ancak 'false! == 0! ==" "'. – Amber
İyi, güzel +1. * Çeviri * için daha iyi bir kelime olur mu * zorla *? (sadece yüksek sesle düşünüyorum) :) – alex
Doğru bir şekilde anladıysam boş olmayan bir dizeyi mi algılamak istiyorsunuz?
function isNonEmptyString(val) {
return (typeof val == 'string' && val!='');
}
/*
isNonEmptyString(0); // returns false
isNonEmptyString(""); // returns false
isNonEmptyString(null); // returns false
isNonEmptyString("something"); // returns true
*/
sıfıra hariç tüm Falsey değerlerini saptamak istiyorsanız:
if (!foo && foo !== 0)
Yani bu null
, boş dizeleri, false
, undefined
vb
Neredeyse oradasınız, 'etc' ile ne demek istediğinizi netleştirebilirsiniz. – SoEzPz
kullanım 'val algılar ===" “val değerinin ikinci testte bir dizilim olmasını sağlamak için. – Warty
Seni bilmiyorum, ancak bu cümleyi mantıklı bir şekilde takip etmem benim için daha kolay: "Boş veya boş dizeleri nasıl algılayabilirim, ancak 0 değil". Bunu söylememin tek nedeni, kodun düzenini sırayla yapmanın bazen daha kolay uygulanmasını sağlayabilmesidir. –