我正在尝试制作一个包含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();
添加回答
举报
0/150
提交
取消