Javascript速记

时间:2010-11-27 12:53:56

标签: javascript

是否有以下简写版本:

(a > 0 && a < 1000 && b > 0 && b < 1000 && c > 0 && c < 1000)

非常感谢。

6 个答案:

答案 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)

没有别的东西出现在我脑海中