ES6以后有三种判等方法
- 抽象(非严格)相等比较 (
==
) - 严格相等(全等)比较 (
===
) - 同值相等Object.is (ES6新特性)
使用哪一种比较全看你的业务需要,不过一般都用===
和Object.is
MDN中有很详细的介绍,这里直接拿过来用了
在做相同的比较时,三种方法的区别
双等号==
将执行类型转换,
三等号
不进行类型转换(如果类型不同, 只是总会返回 false)
Object.is
基本上与三等号相同,但是对于NaN和-0和+0进行特殊处理
Object.is(NaN,NaN)将为
true
,在==
和===
中将是false
,
严格相等===
全等操作符比较两个值是否相等,两个被比较的值在比较前都不进行隐式转换。如果两个被比较的值具有不同的类型,这两个值是不全等的。否则,如果两个被比较的值类型相同,值也相同,并且都不是 number 类型时,两个值全等。最后,如果两个值都是 number 类型,当两个都不是 NaN,并且数值相同,或是两个值分别为 +0 和 -0 时,两个值被认为是全等的。
var num = 0;
var obj = new String("0");
var str = "0";
var b = false;
console.log(num === num)