比較

比較 在 JavaScript

12 個練習

關於 比較

比較數字

在 JavaScript 中,可以使用下列的關係運算子和相等運算子來比較數字。

比較 運算子
大於 a > b
大於或等於 a >= b
小於 a < b
小於或等於 a <= b
(嚴格)相等 a === b
不(嚴格)相等 a !== b

比較的結果一律是布林值,也就是 true 或 false。

1 < 3;
// => true

2 !== 2;
// => false

1 === 1.0;
// => true
// All numbers are floating-points, so this is different syntax
// for the exact same value.

比較字串

在 JavaScript 中,上面這些比較運算子也可以用來比較字串。 此時會套用字典(詞典)順序。 你可以在這裡找到所有字元確切順序的清單。

'Apple' > 'Pear';
// => false

'a' < 'above';
// => true

'a' === 'A';
// => false

當你比較兩個看起來含有數字值、但型別其實是字串的變數時,要特別小心。 由於採用的是字典順序,結果會和比較 Number 型別的值不一樣。

10 < 2;
// => false

'10' < '2';
// => true (because "1" comes before "2")

另一種比較字串的方式是 localeCompare 方法。 它允許設定各種選項來調整字串的比較方式。

嚴格相等

你可能會好奇,在 JavaScript 中檢查相等為什麼要用三個等號。 === 代表的是_嚴格相等_檢查,意思是不會進行任何型別轉換,而且不同型別的值永遠不相等。

'3' === 3;
// => false
// The value on the left has type string, the value on the right
// has type number.

1 === 1n;
// => false
// The value on the left has type number, the value on the right
// has type bigint.

在 JavaScript 中,建議使用 === 和 !== 來檢查相等。

避免隱式型別轉換

另外還有 == 和 !=,代表的是_寬鬆相等_檢查。 你應該避免使用它,因為它會在進行比較之前先套用隱式型別轉換。 這種情況下的結果很難預測,有時甚至不是你預期的樣子。 你可以到這裡進一步了解。

0 == false;
// => true

理論上,你也可以比較不同型別的值(例如 "1" < 2)。 這時值會被隱式轉換,以判斷結果是 true 或 false。 就和檢查寬鬆相等一樣,基於上面提到的相同原因,這同樣不建議使用。

那該怎麼做呢? 你可以套用顯式型別轉換。 這樣一來,你就能在進行比較之前,確保值具有正確的型別。 如此一來,你的程式碼會更容易理解,也更不容易出錯。

透過 GitHub 編輯 連結會在新視窗或分頁中開啟

學習 比較