JavaScript 这类弱类型的语言,在判断相等方面很麻烦,明明不是一个东西,却相等了。这里通过示例展示 null、 undefined、 0、 false、 "" 的相等情况。
var arr = [null, undefined, 0, false, ""];
var str = "";
for (var i = 0; i < arr.length; i++)
{
for (var j = i + 1; j < arr.length; j++)
{
if (arr[i] == arr[j])
{
str += arr[i] + " == " + ((j != 4) ? arr[j] : "\"\"") + "\n";
}
else
{
str += arr[i] + " != " + ((j != 4) ? arr[j] : "\"\"") + "\n";
}
}
}
结果
null == undefined
null != 0
null != false
null != ""
undefined != 0
undefined != false
undefined != ""
0 == false
0 == ""
false == ""
可以看出 null 与 undefined 是一伙的;而 0、false、"" 又是另外一伙的。
怎么排除干扰?
由于不同的数据类型之间都等起来了,要排除干扰,比如让 0 不等于 "",怎么办呢?用恒等 === 或 !==。这样他们就谁都不等于谁了。
相关阅读