一、ES2015中有四種相等演算法1. 抽象(非嚴格)相等比較。(==)2. 嚴格相等比較。( )3. 同值。(Object.is())4. 同值零。二、JavaScript提供三種不同的值比較操作1. 嚴格相等比較,使用 比較符號。(在兩者進行比較時,不會執行類型轉換)2. 抽象相等比較,使用 == ...
一、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