==运算符
在其他的语言中,我们通常使用==来判断两个数是否相等。在js中,==运算符会尽量让两者是相等的。它比较的是truly变量和falsely变量。
truly变量和falsely变量
truly变量:!!a===true。
falsely变量:!!a(三等运算符)false。
注意:falsely变量可以理解。为不存在的事物:包括(‘’,null,undefined,NaN,false)其余的都为一个truly变量。==运算符的比较会自动做类型的转换。
if语句和while语句比较的都是truly变量或falsely变量。
let obj={};
let a=1;
let b="";
let c=null;
if(obj)
{
console.log("true");
}
else{
console.log("false");
}//输出true
if(c)
{
console.log("true");
}
else{
console.log("false")
}//输出false
if(b)
{
console.log("true");
}
else{
console.log("false");
}//输出false
===运算符
由于会进行类型的转换,所以js引入更为严格的比较运算符,这个运算符为===运算符。当运算符的两边为不同类型的数据类型的时候。它们会判断为false。但是这一个运算符也出现了一个弊端,这个弊端就是NaN=NaN为false。然后+0和-0判断为false.
Object.is()
为了解决上述的漏洞,引入了Object.is()的方法,Object.is(NaN,NaN)结果为true,Object.is(+0,-0)结果为false。Object.is()是更为严格的判断。