1、 ==
(==)比较两个值是否相等。不同类型的值,(==)会将它们转换成同一个类型比较。
1 == '1' // true
// 等同于1 === Number('1')
2、===
(===)比较他们是否为 同一个值。不同类型的值,(===)会直接返回false
1 === '1' // false
NaN
与任何值都不相等(包括自身),正0
等于负0
。
NaN === NaN // false
+0 === -0 // true
3、Object.is()
ES6语法。
ES5比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符(===)。它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0。
Object.is它用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。
不同之处只有两个:一是+0不等于-0,二是NaN等于自身。
+0 === -0 //true
NaN === NaN // false
Object.is(+0, -0) // false
Object.is(NaN, NaN) // true