为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Cats萌萌 2021-05-18 17:22:17
我正在尝试制作一个包含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中尝试了相同的功能)。
查看完整描述

1 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

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


您需要使用let进行声明i。


function test(a=5){

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

    console.log(i);

    test(a-1);

  }

}


test();


查看完整回答
反对 回复 2021-05-27
  • 1 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信