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
個人博客:前端判斷值相等的方法和區別