有人能解释一下为什么下面的函数会给出不同的结果吗?第一个似乎不起作用,但第二个却可以。我感到困惑,因为我以为+=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*/
任何帮助都非常感激。谢谢,
Robin
[编辑:]
感谢您的回复,现在我明白了。我之前还尝试了以下语句,结果与函数1相同:
return (base++)
我现在很惊讶,这个表达式没有和第2个函数给出相同的结果——我本来以为括号会强制先计算再返回。你有任何想法为什么会发生这种情况吗?