2012-09-28 41 views
0

所以基本上,我想在程序中使用0和一個空字符串(「」)進行相等性測試時,程序返回true。然後,我可以使用下面的沒有任何錯誤:如何在JavaScript中匹配0和空字符串,但不是0和undefined,而不是0和null?

0 == ""; // true 

但我並不想匹配:

0 == null 
0 == undefined 
"" == null 
"" == undefined 

我想他們都回到false。這怎麼可能?我不認爲有這樣的運營商,那麼有什麼辦法可以改變他們的價值觀,從而以某種方式做這項工作?

+0

你想做什麼?可以返回你想要的函數嗎?還是你需要使現有代碼(使用'==')的行爲有所不同? – Thilo

+0

剛剛在Chrome開發工具上進行了測試,最後4條語句返回false,並且您的第一條語句返回true。 – Passerby

回答

1
function Equals(a,b) { 

    if(a===b || (a===0 && b === "") || (a==="" && b === 0)) return true; 
    return false; 

} 

你可以看看jsfiddle的例子。

+0

謝謝,這有幫助。 – think123

+3

與查克諾里斯相比,每個人都等於零。 – Thilo

+0

@Thilo檢查,每一個類型。 – think123

1
function eq(value) { 
    return (value === 0 || value === ""); 
} 
0

答案是「不是真的」。

你不能像他們那樣對付對方,並期望它能夠正常工作。
使用||並使用兩個語句,但使用===而不是==

雙運算符將嘗試投射到不同類型。
三運營商要求他們是相同的類型。

0 == "" // true 
0 === "" // false 


(testValue === 0 || testValue === "") // will return false for undefined/null/NaN/false 
相關問題