inner conditional: 5
inner conditional: 4
inner conditional: 3
inner conditional: 2
inner conditional: 1
0
创建上述输出的功能如下,我完全理解它是如何工作的。
function loop(counter){
if(counter > 0){
console.log("inner conditional: " + counter );
return loop(counter - 1)
}
console.log(counter);
return counter
}
loop(5)
当修改该函数以使内部条件不返回该函数时,console.log将显示以下内容。
inner conditional: 5
inner conditional: 4
inner conditional: 3
inner conditional: 2
inner conditional: 1
0
1
2
3
4
5
以下是负责上述输出的函数。
function loop(counter){
if(counter > 0){
console.log("inner conditional: " + counter );
loop(counter - 1)
}
console.log(counter);
return counter
}
loop(5)
我根本不明白这一点。我只想解释一下创建扩展前向计数的情况。
我使用以下工具来直观显示代码,我仍然没有“得到”它:http://pythontutor.com/javascript.html#mode=display
答案 0 :(得分:0)
问题是,你再次调用该函数,该函数以一个计数器结束< 1,但它并没有结束实际的功能本身,而是稍后用计数器输出。
如果缩进显示相同的功能,则为相同级别。
inner conditional: 5
inner conditional: 4
inner conditional: 3
inner conditional: 2
inner conditional: 1
0
1
2
3
4
5
答案 1 :(得分:0)
从循环函数的第一个实例内部,您使用return调用循环函数,该函数会在“return”执行后阻止其余语句。 但是,在第二个实例中,在没有返回的情况下调用循环函数,因此也会执行if条件之外的console.log并且您同时看到console.log输出。
答案 2 :(得分:0)
我一直在寻找的答案是,1-5的数量正从堆栈顶部拉出。
我发现了一个很棒的YouTube视频,通过可视化解释了这一点: