一、ES2015中有四種相等演算法
1. 抽象(非嚴格)相等比較,(==)
2. 嚴格相等比較,(===)
3. 同值,(Object.is())
4. 同值零,
二、JavaScript提供三種不同的值比較操作
1. 嚴格相等比較,使用 === 比較符號,(在兩者進行比較時,不會執行型別轉換)
2. 抽象相等比較,使用 == 比較符號,(在兩者進行比較時,會執行型別轉換,)
3. Object.is(),(和嚴格相比較類似,只是對于NaN和+0與-0進行特殊處理)
1. NaN == NaN 回傳false,NaN === NaN 回傳false,Object.is(NaN, NaN) 回傳true,
2. +0 === -0 回傳true,+0 == -0 回傳true,Object.is(+0, -0) 回傳false,
三、非嚴格相等比較下的型別轉換
1. undefined與null和其他型別的值相比較時,都不相等,以至于其他型別在與undefined或者null比較時都不會出現型別轉換,
2. 同型別的值相比較時不需要進行型別轉換,
3. 參考物件在和其他非undefined、null、參考型別的值相比較時,都會嘗試呼叫 toString和valueOf方法將自身先轉換為原始值再參與比較,
4. String型別在與Number、Boolean型別相比較時,會先轉成數字再參與比較,
5. Boolean型別再與Number、String、參考型別相比較時,會先轉成數字在參與比較,
6. Number型別與其他型別相比較時,不用轉換型別,

相關鏈接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Equality_comparisons_and_sameness
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/540311.html
標籤:JavaScript
