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
 
个人博客:前端判断值相等的方法和区别
