1. == (宽松相等)
在比较之前会进行类型转换
可能导致一些意外的结果
0 == '' // true
0 == '0' // true
false == '0' // true
null == undefined // true
[1,2,3]=='1,2,3' // true
2. === (严格相等)
不进行类型转换
类型和值都必须相同
0 === '' // false
0 === '0' // false
false === '0' // false
null === undefined // false
[1,2,3]=='1,2,3' // false
3. Object.is() (同值相等)
与===很相似,但处理一些特殊情况不同
主要区别在于处理NaN和+0/-0
// NaN的比较
NaN === NaN // false
Object.is(NaN, NaN) // true// +0和-0的比较
+0 === -0 // true
Object.is(+0, -0) // false
个人博客:前端判断值相等的方法和区别