Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中,如何匹配0和空字符串,而不是0和未定义,以及不是0和null?_Javascript_Equality - Fatal编程技术网

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

在JavaScript中,如何匹配0和空字符串,而不是0和未定义,以及不是0和null?,javascript,equality,Javascript,Equality,因此,基本上,当使用0和空字符串(“”)进行相等性测试时,我希望程序返回true。然后,我可以毫无错误地使用以下内容: 0 == ""; // true 但我不想匹配: 0 == null 0 == undefined "" == null "" == undefined 我希望它们都返回false。这怎么可能?我不认为这有一个操作符,所以有没有一种方法我可以改变它们的值,使它以某种方式工作 function Equals(a,b) { if(a===b || (a===0 &

因此,基本上,当使用
0
和空字符串(“”)进行相等性测试时,我希望程序返回
true
。然后,我可以毫无错误地使用以下内容:

0 == ""; // true
但我不想匹配:

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

function Equals(a,b) {

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

}
你可以看看这个例子。

答案是“不是真的”

你不能让他们像那样互相对抗,并期望它起作用。
使用
|
并使用两个语句,但使用
==
,而不是
=

double运算符将尝试转换为不同的类型。
三重运算符要求它们是相同的类型

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


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

你想干什么?有一个函数可以返回您想要的,或者您需要使现有代码(使用
=
)表现不同吗?刚刚在Chrome开发工具上测试过,您的最后4个语句确实返回false,第一个语句确实返回true。与Chuck Norris相比,每个人都等于零。@Thilo检查一下,每个人和每个类型。
0 == "" // true
0 === "" // false


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