HOWTO · JavaScript
在 JavaScript 中检查数字是否在两个值之间
在本文中,我们将看到如何在 JavaScript 中检查一个数字是否介于两个值之间。
本页内容
要检查一个数字在 JavaScript 中是否介于两个值之间,可以分别将它与两个边界比较,再用逻辑与(&&)连接这两个比较。例如,number > lower && number < upper 用于检查 number 是否严格处于这个范围内。这个写法不包含等于任一边界的值。如果范围需要包含两个端点,请改用 >= 和 <=。
在 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);
由于 if 示例和此示例都使用 isBetween,因此两者对端点的严格范围处理方式相同。三元表达式会产生一个值,可以将它赋给变量,也可以传给另一个表达式。应让每个分支都保持简短;嵌套过多的三元表达式会让条件和结果更难看清。
如何选择 if 语句或三元运算符
如果某个分支要执行多项操作、包含较复杂的逻辑,或需要明确的控制流,请使用 if。如果只是从两个简短的值中选择一个,而且结果仍然易读,则可以使用三元表达式。两种写法都依赖同一个范围谓词,因此修改谓词中的比较运算符,也会同时改变两种写法对端点的处理规则。
边界应保持所需的顺序。如果函数接收的边界顺序可能不固定,请在检查前先将它们规范化,例如将较小的值赋给 lower,较大的值赋给 upper。比较之前也应确保输入是数字:JavaScript 比较运算符可能会将其他类型的值强制转换,这种结果未必符合应用程序预期的验证规则。对于用户输入的数据,应先解析并验证待检查的值和边界,再应用范围谓词。