counter ++ vs counter = counter+1;

counter ++ vs counter = counter+1;

本文关键字:counter counter+1 vs      更新时间:2023-09-26
var counter = 0;
var increment = function(){
    return counter++;
    // return counter=counter+1;
}
console.log(increment());

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

后置自增运算符返回当前值用于求值,然后对其进行自增,因此当第二次引用该值时,值的变化是明显的。

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

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

尝试对加1的前缀运算符,然后返回加1的待求值

return ++counter; // 1 

这被称为前缀(++x) vs后缀(x++),唯一的区别实际上是操作顺序:

counter;

计算为一个值。(0)

counter++;

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

++counter;

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

var counter = 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;