Javascript 有没有更简洁的方法来检查数字是否在某个范围内?

Javascript 有没有更简洁的方法来检查数字是否在某个范围内?,javascript,range,comparison,Javascript,Range,Comparison,我希望能够测试一个值是否在数字范围内。这是我当前的代码: if ((year < 2099) && (year > 1990)){ return 'good stuff'; } if((年份1990)){ 返回“好东西”; } 有没有更简单的方法?比如说,有这样的东西吗 if (1990 < year < 2099){ return 'good stuff'; } if(1990年

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

if ((year < 2099) && (year > 1990)){
    return 'good stuff';
}
if((年份<2099)和&(年份>1990)){
返回“好东西”;
}
有没有更简单的方法?比如说,有这样的东西吗

if (1990 < year < 2099){
    return 'good stuff';
}
if(1990年<2099年){
返回“好东西”;
}

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

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

Javascript与C非常相似:
1990
返回
true
false
,这些布尔表达式在数值上分别等于0和1

但在C#中,它甚至不会编译,这会给您带来错误:

错误CS0019:操作员'>>年份=5 >>>1990年<2099年 假的 >>>年份=2000年 >>>1990年<2099年 真的

底线是,第一种方式
(x
始终是您最安全的赌注。

如果您不喜欢布尔运算符,您可以始终使用嵌套的If语句:

if (1990 < year)
{
    if( year < 2099)
        return 'good stuff';
}
if(1990<年)
{
如果(年份<2099)
返回“好东西”;
}

您可以制定自己的方法:

// 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;
    }
}
//jquery
$(函数(){
var myNumber=100;
试一试{
如果(myNumber.isBetween(50150))
警报(myNumber+“介于50和100之间”);
其他的
警报(myNumber+“不在50和100之间”);
}捕获(e){
警报(如message());
}
});
//js原型
if(typeof(Number.prototype.isBetween)=“未定义”){
Number.prototype.isBetween=函数(最小、最大、无边界){
var介于=false之间;
如果(不包括边界){
如果((此<最大值)&(此>最小值))介于=真之间;
警报(“非边界”);
}否则{
如果((此=最小值))介于=真之间;
警报(“边界”);
}
警报(“此处”);
返回之间;
}
}
希望这有帮助


Max

来自此处的类似解决方案:

$.fn.between=函数(a,b){

return(a=a&&this[0]=b&&this[0]实现这一点的快速而简单的方法是创建如下函数:

function inRange(n, nStart, nEnd)
{
    if(n>=nStart && n<=nEnd) return true;
    else return false;
}
inRange(199, 200, 1000) => this return false;
或者像这样:

function inRange(n, nStart, nEnd)
{
    if(n>=nStart && n<=nEnd) return true;
    else return false;
}
inRange(199, 200, 1000) => this return false;

好的,我的意思是javascript,对不起。我想带&&的两个语句是唯一的方法?-1.你已经将它添加到jQuery对象的原型中,当它打算添加到
Number
的原型中时,正如你提供的链接中所解释的。这不仅与OP的问题无关,而且是一件毫无意义的事情。为什么这不相关吗?OP要求一个jquery解决方案,链接描述了一个本地js解决方案。jquery中的所有内容都是一个对象,因此是对象原型。为什么这毫无意义?同意,它要求引用对象的值,而不是对象本身(我已更正)但我不认为这会让它变得荒谬……工作示例:嗯。经过您的修改后,我承认这不再是胡说八道。尽管如此,我仍然不会这么做;没有理由说jQuery解决方案比您链接的解决方案更好,而且据我所知,在数字上调用jQuery(您需要做类似
$(4) .between(3,5)
不是人们所做的事情(这是合理的,因为jQuery对象的大多数方法都是特定于DOM元素的);您不必要地打破了正常的jQuery模式,强迫jQuery解决方案使用不需要的东西。如果OP在脚本中使用的是直接的数字数据,那么您是对的;数字原型会更好。但是如果他从输入中获取数字呢?将此[0]更改为此.val()…您会这样做吗?
inRange(199, 200, 1000) => this return false;