【问题标题】: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;