var counter = 0;
var increment = function(){
return counter++;
// return counter=counter+1;
}
console.log(increment());
为什么 counter ++; 返回 0,但 counter = counter +1; 返回 1?
var counter = 0;
var increment = function(){
return counter++;
// return counter=counter+1;
}
console.log(increment());
return
语句时,该值尚未被递增。您可以通过以下方式进行交叉检查:console.log(counter++); // 0
console.log(counter); // 1
return counter; // obviously 1
尝试使用前缀操作符,它会先增加值,然后返回递增后的值以供评估。
return ++counter; // 1
++x
) vs 后缀 (x++
),唯一的区别实际上是操作顺序:counter;
评估为一个值。 (0)
counter++;
这个表达式的结果是一个值(0),进行了计算(0 -> 1),并修改了一个变量(counter
-> 1)。
++counter;
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;