如何在JavaScript中匹配0和空字符串,但不是0和未定义,而不是0和null?

时间:2012-09-28 07:40:37

标签: javascript equality

所以基本上,我希望在使用true和空字符串(“”)进行相等性测试时,程序返回0。然后,我可以使用以下内容而不会出现任何错误:

0 == ""; // true

但我不想匹配:

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

我希望他们都返回false。这怎么可能?我不认为这有一个操作符,所以有没有办法可以改变它们的值来使这个工作以某种方式工作?

3 个答案:

答案 0 :(得分:1)

function Equals(a,b) {

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

}

您可以查看jsfiddle示例。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

答案是“不是真的”。

你不能像那样把它们放在一起,并期望它起作用 使用||并使用两个语句,但使用===代替==

双重操作符将尝试转换为不同类型 三重算子要求它们是相同的类型。

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


(testValue === 0 || testValue === "") // will return false for undefined/null/NaN/false