是否有以下简写版本:
(a > 0 && a < 1000 && b > 0 && b < 1000 && c > 0 && c < 1000)
非常感谢。
答案 0 :(得分:7)
不,没有任何速记。没有简单的内联方式来指定这样的比较,以便可以针对不同的变量重复它。
您可以创建一个验证值的函数:
function between(min, max, values) {
for (var i = 2; i < arguments.length; i++) {
if (arguments[i] < min || arguments[i] > max) return false;
}
return true;
}
并使用:
调用它between(1, 999, a, b, c)
答案 1 :(得分:2)
有很多方法可以做到这一点。就个人而言,如果我这样做 lot ,我会定义一次函数:
function between(val, min, max) { return min < val && val < max; }
然后您的if
支票看起来像:
if(between(a, 0, 1000) && between(b, 0, 1000) && between(c, 0, 1000))
另一种方法是在数字本身上添加一个方法:
Number.prototype.between = function(min,max) { return min<this && this<max; };
然后像这样使用它:
if(a.between(0, 1000) && b.between(0, 1000) && c.between(0, 1000))
虽然这更干净......或者你可能想要完全走另一条路线。
注意:这两种方法都适用于你。它们将运行得更慢,它们只是更容易维护......但是闭包编译器会使用高级优化来内联大部分内容。
答案 2 :(得分:1)
Number.prototype.isInRange = function(low, high) {
return this > low && this < high;
}
现在试试这个:
(a.isInRange(0,1000) && b.isInRange(0,1000) && c.isInRange(0,1000))
如果需要,可以根据自己的喜好重命名该功能,以节省更多的击键次数。我会考虑可读性:)
答案 3 :(得分:1)
如果a,b,c
无法成为负数,您可以这样做:
(a && b && c && a < 1000 && b < 1000 && c < 1000)
或者如果你想稍微清理一下,如果你不反对这种做法,可以添加换行符。
(a > 0 && a < 1000 &&
b > 0 && b < 1000 &&
c > 0 && c < 1000)
不短,但更容易阅读。
答案 4 :(得分:0)
如果您担心比较次数,则没有捷径。如果你想减少比较中的字符数,你可以写一个“在零和2000之间”的函数并调用它三次。
答案 5 :(得分:-1)
你可以使用一个&amp; :
(a > 0 & a < 1000 & b > 0 & b < 1000 & c > 0 & c < 1000)
没有别的东西出现在我脑海中