-2

我希望我的逻辑没有缺陷,但我正在阅读 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

4 回答 4

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;

    }
}
于 2012-05-11T06:39:53.180 回答
3

负数 10 不大于等于 0,所以返回它的相反数。

将负号放在变量前面与将其乘以负 1 是一样的。

于 2012-05-11T06:40:34.447 回答
2

它看起来像

var res = (x >= 0) ? 1 * x : -1 * x;
于 2012-05-11T06:40:14.460 回答
2

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

那是因为这个检查:

x >= 0

如果 number 为 0 或更大,则返回它else返回负数版本,该版本由于-前面的符号而变为正数。

于 2012-05-11T06:40:36.200 回答