javascript - 是否有更紧凑的方法来检查数字是否在某个范围内?

标签 javascript range comparison

我希望能够测试一个值是否在数字范围内。这是我当前的代码:

if ((year < 2099) && (year > 1990)){
    return 'good stuff';
}

有没有更简单的方法来做到这一点?比如说有这样的吗?

if (1990 < year < 2099){
    return 'good stuff';
}

最佳答案

在许多语言中,第二种方式将根据您想要的内容从左到右错误地进行评估。

例如,在 C 语言中,1990 < year将计算为 0 或 1,然后变为 1 < 2099 ,当然,这总是正确的。

Javascript 与 C: 1990 < year 非常相似返回truefalse ,这些 bool 表达式在数值上看起来分别等于 0 和 1。

但是在 C# 中,它甚至无法编译,并给出错误:

error CS0019: Operator '<' cannot be applied to operands of type 'bool' and 'int'

您从 Ruby 中得到类似的错误,而 Haskell 告诉您不能使用 <在同一个中缀表达式中出现两次。

在我看来,Python 是唯一一种我确信能够以这种方式处理“之间”设置的语言:

>>> year = 5
>>> 1990 < year < 2099
False
>>> year = 2000
>>> 1990 < year < 2099
True

底线是第一种方式 (x < y && y < z)永远是您最安全的选择。

关于javascript - 是否有更紧凑的方法来检查数字是否在某个范围内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4408676/

相关文章:

javascript - 通过Jquery给选中的li添加类

javascript - Highchart map 饼图 : clic and hide specific pie

javascript - 检查输入的时间值

string - 冷熔串比较

java - 将两个 HashMap 与相等的键进行比较并检查较高的值

php - 从 Javascript 函数返回一个值

javascript - Svelte 迭代键数组并从对象获取键

mysql - mysql 中范围分区的首次尝试

从数据框中删除连续的重复项

perl - 为什么我对单个字符的字符串相等性测试不起作用?