2010-10-08 21 views
14

使用JavaScript,我該如何不檢測0,但否則檢測空字符串或空字符串?這個if語句不應該檢測到0;只有空或空字符串

+0

使用'VAL ===「 「'確保val在第二次測試中是一個字符串。 – Warty 2010-10-08 05:12:44

+1

我不知道你的情況,但對我來說,邏輯上更容易遵循以下這句話:「如何檢測空或空字符串,但不是0」。我提到這一點的唯一原因是因爲按照您所說的順序構建代碼有時可以更容易實現。 – 2010-10-08 07:10:44

回答

19

從你的問題標題:

if(val === null || val == "") 

我只能看到你忘了嘗試當=用空字符串嚴格的平等 - 比較val

if(val === null || val === "") 

測試使用Firebug:

>>> 0 === null || 0 == "" 
true 

>>> 0 === null || 0 === "" 
false 

編輯:請參閱CMS的評論來解釋。

+0

哦,所以一個空字符串與0相同==?奇。謝謝! – Hamster 2010-10-08 05:09:18

+1

是的;實際上,這是'==='超過'=='的最大原因之一。由於自動轉換,'false == 0 ==「」'',但是'false!== 0!==「」'。 – Amber 2010-10-08 05:11:03

+1

好,好+1。 *翻譯*的更好的詞會被強制*嗎? (只是想念:) :) – alex 2010-10-08 05:17:38

0

如果我理解正確,你想檢測一個非空字符串?

function isNonEmptyString(val) { 
    return (typeof val == 'string' && val!=''); 
} 
/* 
    isNonEmptyString(0); // returns false 
    isNonEmptyString(""); // returns false 
    isNonEmptyString(null); // returns false 
    isNonEmptyString("something"); // returns true 
*/ 
18

如果要檢測所有falsey值除零:

if (!foo && foo !== 0) 

因此,這將檢測null,空字符串,falseundefined

+0

你幾乎在那裏,不妨澄清你的意思是'etc'。 – SoEzPz 2017-11-22 19:07:20