aba*_*edo 5 javascript recursion function
我正在阅读有关MDN上的函数的文章,我到达了Recursive部分,但我不明白最后一部分讨论使用类似堆栈的行为.
一个例子是:
function foo(i) {
if (i < 0)
return;
console.log('begin:' + i);
foo(i - 1);
console.log('end:' + i);
}
foo(3);
// Output:
// begin:3
// begin:2
// begin:1
// begin:0
// end:0
// end:1
// end:2
// end:3
Run Code Online (Sandbox Code Playgroud)
在该功能上,我了解何时显示begin日志,但是当显示end日志时我不知道.有人可以帮我解释一下吗?
所以基本上在每次调用 foo 时,它都会i-1保持函数打开,但它还没有返回。它继续下去,因此开始不断被调用,一旦达到 0,最后一个函数调用就会返回。一旦发生这种情况,其他 foo 调用也可以开始完成。他们将从最旧到最新完成。
您可以使用Philip Roberts的放大镜看到此效果的可视化。 这是您的示例的放大镜。
| 归档时间: |
|
| 查看次数: |
334 次 |
| 最近记录: |