Javascript(-1 <= 5 <= 1)===是吗?

Luk*_*tep 4 javascript compare

我想验证给定数字是否在给定范围内:

function validate(min, max, amount) {
    return (min <= amount <= max);
}
Run Code Online (Sandbox Code Playgroud)

但这似乎不能正常工作.我知道我可以通过两个比较和一个逻辑AND来做到这一点,但我想在一个比较中做到这一点.是否有任何NATIVE JavaScript方法来实现这一点?

Den*_*ret 9

请改用:

return (min <= amount && amount <= max);
Run Code Online (Sandbox Code Playgroud)

没有捷径.并且有一个很好的理由,JavaScript引擎无法猜测你的意图:你输入的内容是有效的,它只是没有被解释为你想要的.事实上,你正在测试

((min <= amount) <= max)
Run Code Online (Sandbox Code Playgroud)

并且第一次比较的结果(布尔值)被转换为01用于第二次(此处有关运算符优先级的更多详细信息,这些比较运算符是从左到右).

如果你真的想要一个快捷方式,你可以这样做:

Number.prototype.isin = function(m,M) {
   return m<=this && this<=M; 
};

console.log(0.5.isin(1,2)); // logs false
console.log(3..isin(2,5));  // logs true
Run Code Online (Sandbox Code Playgroud)

但我个人会使用标准解决方案&&,每个人都可以阅读,而不涉及额外的函数调用.

旁白:我可以调用我的函数in而不是isin它可能会破坏ES3浏览器.