我有一个关于递归的基本问题,以及+1和++的差异如何影响结果。
为什么这个代码:
var arrayLoop = function(idx){
if(idx < 5){
console.log(idx);
return arrayLoop(idx+1);
}
};
arrayLoop(0);
会很好,但是这个:
var arrayLoop = function(idx){
if(idx < 5){
console.log(idx);
return arrayLoop(idx++);
}
};
arrayLoop(0);
导致无限循环?
答案 0 :(得分:2)
i ++是一个表达式,它增加'i'但返回增量前的值。您可以使用++ i来达到理想的结果。
答案 1 :(得分:2)
在第二个示例中,您使用++
运算符作为后增量,因此您使用的是idx++
而不是++idx
。
如果使用后增量表达式使用增量前的值进行计算,那么它就是增量。您可以将其视为(请注意,它不是语义相同的,只是为了给您提供想法):
return arrayLoop(idx);
idx = idx + 1;
因此,您可以看到始终使用0
作为参数调用该方法。
预增量++idx
运算符将反转操作:
idx = idx + 1;
return arrayLoop(idx);