了解JavaScript中的自定义abs函数

时间:2012-05-11 06:37:25

标签: javascript math ternary-operator

我希望我的逻辑没有缺陷,但我正在阅读JavaScript的权威指南,我不明白这个自定义abs函数是如何工作的......

function abs(x) {
  if (x >= 0) {
    return x;
  } else {
    return -x;
  }
}

我使用三元运算符重新起草它以试图理解它......

var res = (x >= 0) ? x : -x;
return res;

......但我仍然不知道它是如何运作的。

假设我使用-10作为x,它如何返回+10?标志如何反转?

4 个答案:

答案 0 :(得分:5)

function abs(x) {
    if (x >= 0) {

        //If the number passed is greater than or equal to zero (positive)
        //return it back as is
        return x;

    } else {

        //If less than zero (negative)
        //return the negative of it (which makes it positive)
        // -(-10) === 10
        return -x;

    }
}

答案 1 :(得分:3)

负10不大于或等于0,因此返回其相反值。

在变量前放置一个负号与将其乘以负数1相同。

答案 2 :(得分:2)

看起来像

var res = (x >= 0) ? 1 * x : -1 * x;

答案 3 :(得分:2)

  

假设我使用-10作为x,它如何返回+10?标志如何反转?

这是因为这个检查:

x >= 0

如果数字为0或更大,则返回else返回否定版本,由于前面有-符号而变为正数。