counter ++ vs counter = counter + 1;

时间:2015-05-24 06:33:46

标签: javascript increment operator-keyword

var counter = 0;
var increment = function(){
    return counter++;
    // return counter=counter+1;
}

console.log(increment());

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

3 个答案:

答案 0 :(得分:3)

修复后增量运算符返回当前值以进行评估,然后将其递增,因此第二次引用时值更改会很明显。

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

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

尝试增加的预修复操作符,然后返回要评估的增量值。

return ++counter; // 1 

答案 1 :(得分:1)

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

counter;

评估为一个值。 (0)

counter++;

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

++counter;

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

答案 2 :(得分:0)

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;