JavaScript递归问题
我正在尝试编写一个递归方法,它可以将JavaScript递归问题,javascript,Javascript,我正在尝试编写一个递归方法,它可以将数组/值作为输入,然后处理输入 <html> <body> <script> function process(array){ if (array instanceof Array) { for(i=0; i < array.length; i++){ process(array[i]); } } e
数组/值
作为输入,然后处理输入
<html>
<body>
<script>
function process(array){
if (array instanceof Array) {
for(i=0; i < array.length; i++){
process(array[i]);
}
} else {
document.write(array + "<br />");
}
}
process([3, 4, 5, [4,1], [5,1,2],[6,1]]);
</script>
</body>
</html>
函数进程(数组){
if(数组的数组实例){
对于(i=0;i ”);
}
}
过程([3,4,5,4,1],[5,1,2],[6,1]);
当我试着运行这个程序时,它似乎进入了一个无限循环。为什么 这是因为迭代变量“i”的作用域,如果将其声明为局部变量,则该方法可以正常工作。例:
for(var i=0; i < array.length; i++)
for(变量i=0;i
如果您创建的变量没有“var”关键字,那么变量的作用域将是全局的(窗口)
在您的例子中,当调用过程([4,1])发生时,变量i的值为3,则在调用过程中,变量“i”的值被保留为“0”,然后递增为“1”和“2”,然后值[4,1]的处理完成,并将控制权交还给调用方。但是,由于变量“i”是全局范围的,“i”的值被修改为“2”,而不是“3”,因此这会导致主循环再次处理值[4,1]。这将导致无限循环