Javascript:如何仅为当前递归层设置变量“private”?

Javascript:如何仅为当前递归层设置变量“private”?,javascript,function,variables,recursion,Javascript,Function,Variables,Recursion,我正在尝试创建一个包含for循环的函数。然而,在循环中,它调用自己,下一层重置计数器。我知道这在PHP中是可行的,但我不知道如何防止计数器被内部for循环重置 我的原始代码更复杂,因此我将示例简化为: function test(a=5){ for(i=0; i<a; i++){ console.log(i); test(a-1); } } test(); 当我运行这个时,我得到1 我期望的是1 1 1 2 1 2 1 2 1 2 1 1 2 1 2 1 2 1

我正在尝试创建一个包含for循环的函数。然而,在循环中,它调用自己,下一层重置计数器。我知道这在PHP中是可行的,但我不知道如何防止计数器被内部for循环重置

我的原始代码更复杂,因此我将示例简化为:

function test(a=5){
  for(i=0; i<a; i++){
    console.log(i);
    test(a-1);
  }
}

test();
当我运行这个时,我得到1


我期望的是1 1 1 2 1 2 1 2 1 2 1 1 2 1 2 1 2 1 2 1 2 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 1 2 1 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 1 2 1 1 1 1 2 1 1在PHP中尝试了相同的函数。

如果您声明一个不带var的变量,let,const该变量将成为一个全局变量。因此,在您的代码中,您正在创建一个全局变量,然后递归函数具有相同的i递增

您需要使用let来声明i

函数testa=5{
forlet i=0;iYou忘了将i声明为局部变量,因此这是一个隐式的简单单词,它完全修复了我的整个代码我在JS中非常新…非常感谢: