递归计数并使用+1 vs ++

时间:2016-01-25 04:56:31

标签: javascript recursion

我有一个关于递归的基本问题,以及+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);

导致无限循环?

2 个答案:

答案 0 :(得分:2)

i ++是一个表达式,它增加'i'但返回增量前的值。您可以使用++ i来达到理想的结果。

答案 1 :(得分:2)

在第二个示例中,您使用++运算符作为后增量,因此您使用的是idx++而不是++idx

如果使用后增量表达式使用增量前的值进行计算,那么它就是增量。您可以将其视为(请注意,它不是语义相同的,只是为了给您提供想法)

return arrayLoop(idx);
idx = idx + 1;

因此,您可以看到始终使用0作为参数调用该方法。

预增量++idx运算符将反转操作:

idx = idx + 1;
return arrayLoop(idx);