1、對於string,number等基礎型別,==和===是有區別的
1)不同型別間比較,==之比較“轉化成同一型別後的值”看“值”是否相等,===如果型別不同,其結果就是不等
2)同型別比較,直接進行“值”比較,兩者結果一樣
2、對於Array,Object等高階型別,==和===是沒有區別的
進行“指標地址”比較
3、基礎型別與高階型別,==和===是有區別的
1)對於==,將高階轉化為基礎型別,進行“值”比較
2)因為型別不同,===結果為false
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
var num = 1; var str = '1'; var test = 1; test == num //true 相同型別 相同值 test === num //true 相同型別 相同值 test !== num //false test與num型別相同,其值也相同, 非運算肯定是false num == str //true 把str轉換為數字,檢查其是否相等。 num != str //false == 的 非運算 num === str //false 型別不同,直接返回false num !== str //true num 與 str型別不同 意味著其兩者不等 非運算自然是true啦 |
== 和 != 比較若型別不同,先償試轉換型別,再作值比較,最後返回值比較結果 。
而
=== 和 !== 只有在相同型別下,才會比較其值。