Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有人能帮我理解以下代码的输出吗?_Javascript - Fatal编程技术网

Javascript 有人能帮我理解以下代码的输出吗?

Javascript 有人能帮我理解以下代码的输出吗?,javascript,Javascript,我试过了,但每次我都得到不同的奇怪输出。理想情况下,它应该打印0、1、2、3、4并从循环中出来,但不会发生 function foo(iteration) { if (iteration === 5) { return; } for (let i = 0; i < 5; i++) { console.log(i); foo(iteration + 1); } } foo(0); 要了解当前输出,请从逐步浏览

我试过了,但每次我都得到不同的奇怪输出。理想情况下,它应该打印0、1、2、3、4并从循环中出来,但不会发生

function foo(iteration) {
    if (iteration === 5) {
        return;
    }
    for (let i = 0; i < 5; i++) {
        console.log(i);
        foo(iteration + 1);
    }
}

foo(0);

要了解当前输出,请从逐步浏览函数开始。这有助于我把它写出来,并跟踪这些值

迭代从0开始

它启动for循环

我现在是0

它被记录到控制台

再次调用值为1的foo

迭代仍然少于5次

一个新的for循环开始。步骤2

i是0,这是一个全新的循环,因为它位于foo的一个新实例中

在for循环的每个迭代中,调用foo,当迭代少于5次时,启动一个新的for循环

下面是一个函数示例,它可以执行您喜欢的操作:

函数迭代{ 而畸形<5{ 控制台登录 迭代++ } }
foo0因为您已经在使用递归,所以不需要使用该循环。像这样的方法应该会奏效:

函数迭代{ 如果迭代<5{ 控制台。登录; 迭代次数+1; } }
foo0您不需要使用递归和循环。只有循环本身会起作用

对于let i=0;i<5;i++{ console.logi;
}这是因为函数的递归调用中的循环。您只需删除for循环并保留其余代码。它将按您的意愿打印数字。