如果值在两个数字之间

Ini*_*igo 12 jquery if-statement date-range

我希望能够测试一个值是否在数字范围内.这是我的jQuery代码......

if ((year < 2099) && (year > 1990)){
    return 'good stuff';
}
Run Code Online (Sandbox Code Playgroud)

在jQuery中有更简单的方法吗?例如,有这样的东西......

if (1990 < year < 2099){
    return 'good stuff';
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*off 22

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

例如,在C中,1990 < year将评估为0或1,然后变为0 1 < 2099,当然,这总是正确的.

Javascript与C:1990 < yearreturn true或者非常相似false,并且这些布尔表达式似乎在数值上分别等于0和1.

但在C#中,它甚至不会编译,给你错误:

错误CS0019:运算符'<'不能应用于'bool'和'int'类型的操作数

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

在我的脑海中,Python是我唯一能够处理"之间"设置的语言:

>>> year = 5
>>> 1990 < year < 2099
False
>>> year = 2000
>>> 1990 < year < 2099
True
Run Code Online (Sandbox Code Playgroud)

最重要的是,第一种方式(x < y && y < z)始终是您最安全的选择.


小智 9

你可以制作自己的方法:

// jquery
$(function() {
    var myNumber = 100;
    try {
        if (myNumber.isBetween(50, 150)) 
            alert(myNumber + " is between 50 and 100.");
        else 
            alert(myNumber + " is not between 50 and 100.");
    } catch (e) {
        alert(e.message());
    }

});

// js prototype
if (typeof(Number.prototype.isBetween) === "undefined") {
    Number.prototype.isBetween = function(min, max, notBoundaries) {
        var between = false;
        if (notBoundaries) {
            if ((this < max) && (this > min)) between = true;
            alert('notBoundaries');
        } else {
            if ((this <= max) && (this >= min)) between = true;
            alert('Boundaries');
        }
        alert('here');
        return between;
    }
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.

马克斯