【问题标题】:Understanding custom abs function in JavaScript了解 JavaScript 中的自定义 abs 函数
【发布时间】:2012-05-11 06:37:25
【问题描述】:

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

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

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

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

...但我仍然不明白它是如何工作的。

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

【问题讨论】:

  • 虽然我发现在大多数情况下编码所需的数学知识程度远低于预期,但您确实需要了解一些基础知识——比如运算符优先级的原则,或者,在这种情况下,管理正数和负数相互作用的规则。
  • 我真希望我对数学有更强的把握。我正在积极寻求提高这项技能并将其应用于编程。我知道 P.E.M.D.A.S 和管理这些数字的规则,但我不明白 return -x 是如何工作的。用 -10 替换 x,我认为它也替换了负数......但深入思考它,它只是用 (-10) 替换 x 并将 - 符号留在 (-10) 前面,其值为 10。

标签: javascript math ternary-operator


【解决方案1】:
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;

    }
}

【讨论】:

  • 我在想你必须将 -10 乘以 -1 才能更改符号但保留它的值。这就是我的想法,return -x * -1;但我想这只会让它再次变得消极。我认为 -10 只会覆盖参数中的负数,它会保持 -10。
【解决方案2】:

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

在变量前面加一个负号相当于把它乘以负 1。

【讨论】:

    【解决方案3】:

    看起来像

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

    【讨论】:

      【解决方案4】:

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

      因为这个检查:

      x >= 0
      

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

      【讨论】:

        猜你喜欢
        • 2021-05-12
        • 2016-07-30
        • 2011-09-25
        • 2021-06-25
        • 2011-11-11
        • 2014-05-27
        • 1970-01-01
        • 2022-01-17
        • 2014-08-03
        相关资源
        最近更新 更多