【问题标题】:Trouble understanding the postfix increment operator in Javascript无法理解 Javascript 中的后缀增量运算符
【发布时间】:2014-02-04 03:35:47
【问题描述】:

我只是在学习 Javascript,我不明白为什么下面的等式等于 23。我会说应该是 24。

在我的网课中,为什么答案是23的解释如下:

“num1 加到 3,然后递增 1(20+3)”这个答案对我来说毫无意义。

var num1=20;
num2=num1++ +3;
alert (num2)

任何帮助将不胜感激!

【问题讨论】:

    标签: javascript operators increment


    【解决方案1】:
    var num1=20;
    num2=num1++ +3;
    

    这就是说:将num1 的值加3,并将结果分配给num2。然后递增num1。 操作完成后num1 == 21num2 == 23

    如你所见,结果是 23。

    正是这种混淆导致了修复前和修复后操作员的气馁。

    【讨论】:

    • 值得注意的是++num1 +3 会产生问题中预期的结果。
    • @user2196989 绝对。
    • 好的……这就解释了。谢谢。我将 20 和 3 的 num1 值相加,然后将其增加 1 并得到 24。我猜 num1++ 是完全独立的,有点..?
    【解决方案2】:

    基本上,后缀 ++(特别是 ++ AFTER 一个变量)的方式就像一个特殊的函数。它执行 2 个动作

    1. 给变量加一
    2. 返回变量原始值

    将此与执行以下两个操作的前缀运算符 ++num1 进行比较:

    1. 给变量加一
    2. 返回新值

    如果它有助于在代码中看到这一点,您可以将其视为

    function PlusPlus(num)
    {
        var oldValue = num;
        num = num + 1;
        return oldValue;
    }
    

    虽然由于值传递,这实际上不会按照您想要的方式执行,但这不是重点。记住前缀和后缀之间的区别可能很棘手,但要记住的主要事情是后缀出现在变量之后,并在行中其他所有操作完成后更改它,而前缀出现在变量之前,并在任何事情之前更改它否则完成。

    【讨论】:

      【解决方案3】:

      后缀增量基本上是这样做的:

      var num2 = num1 + 3;
      num1 = num1 + 1;
      

      等效代码如下:

      var num1 = 20;
      var num2 = num1 + 3; // 20 + 3 = 23
      num1 = num1 + 1; // 20 + 1 = 21
      alert(num2); // alerts 23
      

      前缀增量运算符(我知道这不是被问到的,但它可能很有用)的工作方式如下:

      /* Original code */
      var num1 = 20;
      var num2 = ++num1 + 3;
      alert(num2);
      
      /* Broken down code */
      var num1 = 20;
      num1 = num1 + 1; // 20 + 1 = 21
      var num2 = num1 + 3; // 21 + 3 = 24
      alert(num2) // alerts 24
      

      继续询问您是否还有其他问题。我会很高兴地回答他们。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-12
        • 1970-01-01
        • 1970-01-01
        • 2012-12-28
        • 2011-05-19
        • 2018-08-22
        • 1970-01-01
        相关资源
        最近更新 更多