Javascript:如何仅对当前递归层使变量“私有”?

我正在尝试制作一个包含for循环的函数。但是,在循环中,它会自行调用,并且“下一层”会重置计数器。我知道这将在PHP中起作用,但是我无法弄清楚如何使该计数器“受保护”以免被内部for循环重置。


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


function test(a=5){

  for(i=0; i<a; i++){

    console.log(i);

    test(a-1);

  }

}


test();

当我运行它时,我得到“ 1 1 1 1”。


我所期望的是“ 1 1 1 1 2 1 2 1 1 2 1 3 1 1 2 1 2 1 2 1 1 2 1 2 1 1 2 1 3 1 1 2 2 3 3 1 1 1 2 1 2 1 1 2 1 3 1 1 2 1 4 1 1 1 2 1 2 1 1 2 1 3 1 1 2 1“(在PHP中尝试了相同的功能)。


Cats萌萌
浏览 94回答 1
1回答

慕田峪4524236

如果声明不带变量的变量,则var,let,const该变量将成为全局变量。因此,在您的代码中,您将创建一个全局变量,然后递归函数具有相同的i增量。您需要使用let进行声明i。function test(a=5){&nbsp; for(let i=0; i<a; i++){&nbsp; &nbsp; console.log(i);&nbsp; &nbsp; test(a-1);&nbsp; }}test();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript