【问题标题】:counter ++ vs counter = counter+1; [duplicate]计数器 ++ vs 计数器 = 计数器 +1; [复制]
【发布时间】:2015-08-05 21:31:14
【问题描述】:
var counter = 0;
var increment = function(){
    return counter++;
    // return counter=counter+1;
}

console.log(increment());

为什么 counter ++; 返回 0 而 counter = counter +1; 返回 1?

【问题讨论】:

    标签: javascript increment operator-keyword


    【解决方案1】:

    后置自增运算符返回当前值进行评估,然后然后将其递增,因此第二次引用时值的变化是显而易见的。

    所以当return 语句被执行时,值还没有增加。您可以通过执行以下操作进行交叉检查:

    console.log(counter++); // 0
    console.log(counter); // 1
    return counter; // obviously 1
    

    尝试递增的前缀运算符,then 返回要评估的 incremented 值。

    return ++counter; // 1 
    

    【讨论】:

      【解决方案2】:

      这称为prefix (++x) vs postfix (x++),唯一的区别实际上是操作顺​​序:

      counter;
      

      求值。 (0)

      counter++;
      

      求值 (0),执行计算 (0 -> 1) 并修改变量 (counter -> 1)。

      ++counter;
      

      执行计算 (0 + 1),修改变量 (counter -> 1) 并计算出值 (1)。

      【讨论】:

        【解决方案3】:

        var 计数器 = 0;

        var increment = function(){
        // now counter is 0 and after return it increment it's value to 1
        // return 0 then 0+1=1;
            return counter++;
        // calculate like math, counter = 0+1 then counter = 1, now return 1;
            // return counter=counter+1;
        }
        
        console.log(increment());
        

        在第一种情况下,

        return counter++;
        

        此语句是后缀,计算结果类似于

        return 0; and then 0+1=1
        

        在第二种情况下,

        return counter=counter+1;
        

        像数学一样计算,

        return counter = 0+1 then,
        return counter = 1, 
        return 1;
        

        【讨论】:

          猜你喜欢
          • 2021-04-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多