JS中的雙等號 比較機制!

2021-08-09 16:43:20 字數 586 閱讀 8318

三等號(===)是嚴格相等,而雙等號(==)在判斷相等的過程中會進行隱性轉化。比如'1'==1就會返回true。

首先判斷雙等號兩邊是否有nan,如果有的話,則一律返回false。

如果有的話則將true轉化為1,false轉化為0。

遇到null或者undefined,則不會進行型別轉換,它們相互的比較都返回true。

分四種情況:

1) 同樣是字串,則直接進行字串值的比較

2) 是數字,則需要將字串轉化為數字,然後進行比較

3) 有布林型別,則要將布林型別轉化為0或則1,然後進行比較

4) 物件或者陣列型別,則需要呼叫tostring()或者valueof()方法轉化成簡單型別,然後進行比較

物件轉化為簡單型別時會優先呼叫valueof方法,如果可以與簡單值進行比較則會直接比較,此時不再呼叫tostring方法。

如果呼叫valueof方法後無法與簡單值進行比較,則會再呼叫tostring方法,最終得到比對的結果。

但是需要注意的一點是date物件不滿足上述的規則,date物件的tostring和valueof方法都是重新定義過的,

缺省會呼叫tostring方法。

JS中的雙等和全等號比較機制

判斷等式兩邊是否有nan數,如果有,一律判定為false 2.1 一邊為boolean型別,一邊為表示式 判斷表示式的布林值與boolean進行比較 2.2 一邊為number型別,一邊為boolean型別 將boolean型別轉換為number,false 0,true 1,然後進行比較 遇到nu...

js中2個等號與3個等號的區別

首先,equality 等同,identity 恒等。兩邊值型別不同的時候,要先進行型別轉換,再比較。不做型別轉換,型別不同的一定不等。下面分別說明 先說 這個比較簡單。下面的規則用來判斷兩個值是否 相等 1 如果型別不同,就 不相等 2 如果兩個都是數值,並且是同乙個值,那麼 相等 例外 的是,如...

js中2個等號與3個等號的區別

首先,equality 等同,identity 恒等。兩邊值型別不同的時候,要先進行型別轉換,再比較。不做型別轉換,型別不同的一定不等。下面分別說明 先說 這個比較簡單。下面的規則用來判斷兩個值是否 相等 1 如果型別不同,就 不相等 2 如果兩個都是數值,並且是同乙個值,那麼 相等 例外 的是,如...