有人可以解释为什么以下函数会给出不同的结果。第一个似乎不起作用,但第二个起作用。我很困惑,因为我认为 +=1 和 ++ 做了同样的事情。
(我不打算实际使用此代码,只是为了演示差异)。
/*function 1*/
function incrementIfZero1(base,element) {
if (element == 0) {
return base++;
}
else
{
return base;
}
};
/*function 2*/
function incrementIfZero2(base,element) {
if (element == 0) {
return base+=1;
}
else
{
return base;
}
};
incrementIfZero1(1,0) /* -> 1*/
incrementIfZero2(1,0) /* -> 2*/
很感谢任何形式的帮助。
谢谢,
罗宾
[编辑:]
谢谢你的回复,现在说得通了。我还尝试了以下语句,结果与函数 1 相同:
return (base++)
我现在很惊讶这并没有给出与函数 2 相同的结果——我原以为括号会“强制”在返回之前对其进行评估。知道为什么不是这样吗?