JavaScript中的比較運算子
阿新 • • 發佈:2019-01-05
比較運算子
當我們對Number做比較時,可以通過比較運算子得到一個布林值:
2 > 5; // false
5 >= 2; // true
7 == 7; // true
實際上,JavaScript允許對任意資料型別做比較:
false == 0; // true
false === 0; // false
要特別注意相等運算子==
。JavaScript在設計時,有兩種比較運算子:
第一種是==
比較,它會自動轉換資料型別再比較,很多時候,會得到非常詭異的結果;
第二種是===
比較,它不會自動轉換資料型別,如果資料型別不一致,返回false
,如果一致,再比較。
由於JavaScript這個設計缺陷,不要
==
比較,始終堅持使用===
比較。
另一個例外是NaN
這個特殊的Number與所有其他值都不相等,包括它自己:
NaN === NaN; // false
唯一能判斷NaN
的方法是通過isNaN()
函式:
isNaN(NaN); // true
最後要注意浮點數的相等比較:
1 / 3 === (1 - 2 / 3); // false
這不是JavaScript的設計缺陷。浮點數在運算過程中會產生誤差,因為計算機無法精確表示無限迴圈小數。要比較兩個浮點數是否相等,只能計算它們之差的絕對值,看是否小於某個閾值:
Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true