更简单的替代双if语句javascript

时间:2011-09-06 10:47:15

标签: javascript

我正在寻找一种更简单的方法来编写这一小段代码:

if (a > max)
    a = max;
if (a < min)
    a = min;

在javascript中执行此操作的最简单方法是什么?

4 个答案:

答案 0 :(得分:4)

a = (a > max) ? max : a;
a = (a < min) ? min : a;

甚至

a = (a < min) ? min : (a > max) ? max : a;

答案 1 :(得分:3)

使用Math.maxMath.min

a = Math.max(min, Math.min(max, a));

如果你想要可读性,那么这样的事情可能会更好:

function bounded(val, min, max) {
    if (val < min) {
        return min;
    } else if (val > max) {
        return max;
    } else {
        return val;
    }
}

这很容易理解,因为只有在详细程度不是主要问题时才定义。像这样使用它:

a = bounded(a, 0, 10);

答案 2 :(得分:2)

a = Math.max(Math.min(a, max), min);

这真的很简单吗?

答案 3 :(得分:0)

我认为代码有点难以理解,原因如下:

  • 单行if分为两行
  • 尝试限制某个范围内的值,但不会使其明确。

因此,我发现以下缩进的评论更好,更简单,更清晰:

// Limit a to the [min,max] interval
if (a > max) a = max;
if (a < min) a = min;

奖励积分:显然我们假设min&lt; max。