HOWTO · JavaScript
在 JavaScript 中檢查數字是否在兩個值之間
在本文中,我們將看到如何在 JavaScript 中檢查一個數字是否介於兩個值之間。
本頁內容
在 JavaScript 中檢查數字是否介於兩個值之間,可以將數字分別與上下界比較,再用邏輯 AND(&&)連接兩個比較式。例如,number > lower && number < upper 會檢查數字是否嚴格落在範圍內;等於任一界限的值都不包含在內。如果要包含兩個端點,請改用 >= 和 <=。
在 JavaScript 中檢查數字是否介於兩個值之間
範圍檢查會結合兩個比較條件:數字必須大於下界,且小於上界。&& 運算子只有在兩個比較結果都為真時,才會讓整個條件成立。只要其中一個比較結果為假,數字就不在這個嚴格範圍內。
例如,界限為 10 和 50 時,數值 25 通過嚴格範圍檢查;10 和 50 則不通過,因為 > 和 < 不包含相等的情況。若要包含端點,請寫成 number >= lower && number <= upper。請依照程式需要的規則選擇比較運算子;「介於兩者之間」本身並未說明是否包含端點。
對數值運算元而言,JavaScript 的比較運算子會產生布林結果。詳情請參閱 MDN 的比較運算子文件和邏輯運算子文件。以下範例假設待檢查的值和兩個界限都是數字,而且下界小於上界。
使用 if 陳述式檢查數字範圍
將範圍規則寫成具名的判斷函式,就能重複使用。這個範例使用 if 陳述式在兩則訊息之間做選擇。請執行此範例:
本節中的程式碼以及顯示的標籤或輸出仍為英文。
function isBetween(number, lower, upper) {
return number > lower && number < upper;
}
const value = 25;
if (isBetween(value, 10, 50)) {
console.log(`${value} is between 10 and 50`);
} else {
console.log(`${value} is outside the range`);
}
函式會傳回布林值,因此凡是需要條件的地方都可以使用它。以範例中的數值來看,第一個比較是 25 > 10,第二個比較是 25 < 50;兩者都為真,所以會執行 if 分支。只要其中一個比較為假,程式流程就會進入 else。如果任一分支需要執行多個陳述式,或是分別命名各個分支能讓邏輯更容易理解,區塊形式就很實用。
使用三元運算子檢查數字範圍
若只需在兩個值之間做簡短選擇,也可以在三元運算式中使用相同的判斷函式。條件寫在 ? 前面;? 和 : 之間的運算式會在條件為真時選用,: 後面的運算式則會在條件為假時選用。
本節中的程式碼以及顯示的標籤或輸出仍為英文。
function isBetween(number, lower, upper) {
return number > lower && number < upper;
}
const value = 25;
const message = isBetween(value, 10, 50)
? `${value} is between 10 and 50`
: `${value} is outside the range`;
console.log(message);
由於兩個範例都使用 isBetween,這種寫法和 if 範例一樣,會排除端點。三元運算式會產生一個值,可以將它指派給變數,或傳給另一個運算式。請讓兩個分支保持簡短;過長或巢狀太深的三元運算式,會讓條件和結果較難閱讀。
如何選擇 if 與三元運算子
如果分支需要執行多個動作、包含較複雜的邏輯,或明確的控制流程更容易理解,請使用 if。若只是要從兩個精簡的值中選一個,而且結果仍然容易閱讀,則可使用三元運算式。兩種寫法都依賴相同的範圍判斷函式,因此修改其中的比較運算子,也會改變兩種寫法的端點規則。
請確認上下界的順序符合預期。如果函式收到的界限順序不固定,請先在檢查前正規化,例如將較小的值指定給 lower,較大的值指定給 upper。比較之前也要確認輸入是數字:JavaScript 的比較運算子可能會將其他型別的值轉型,而結果未必符合應用程式預期的驗證規則。若資料由使用者輸入,請先剖析並驗證數值及其界限,再套用範圍判斷函式。