1. 程式人生 > >JavaScript中的比較運算子

JavaScript中的比較運算子

比較運算子

當我們對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