无法理解Javascript中的后缀增量运算符

时间:2014-02-04 03:35:48

标签: javascript operators increment

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

在我的在线课程中,答案为23的原因解释如下:

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

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

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:2)

var num1=20;
num2=num1++ +3;

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

结果是23,正如您所发现的那样。

正是这种混乱导致了前后修复操作员的沮丧。

答案 1 :(得分:0)

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

  1. 向变量
  2. 添加一个
  3. 返回变量原始值
  4. 将它与前缀运算符++ num1进行比较,后者执行以下两个操作:

    1. 向变量
    2. 添加一个
    3. 返回新值
    4. 如果在代码中看到这一点有帮助,您可以将其视为

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

      虽然这实际上并没有按照你想要的方式执行,因为传递了值,但这不是重点。记住前缀和后缀之间的区别可能很棘手,但要记住的主要事情是postfix来自变量,并在行中完成其他所有操作后更改它,而前缀来自变量之前,并在之前更改它别的完成了。

答案 2 :(得分:0)

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

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

继续问你是否还有其他问题。我很高兴回答他们。