javascript 在解析函数时候的流程
见如下代码
function x(y) {
console.log(y);
if (y==0) return;
x(y-1);
}
运行x(5)
结果就是将会log
出
5
4
3
2
1
0
这些东西,但是问题来了,当js引擎遇到这个语句的时候,他是如何解析的。
如果是先解析内部的话,遇到x(y-1)
的时候就会向上寻找x
函数,但是此时x
函数并创建,那么是怎么找到x
函数的呢?
如果是先创建函数的话,那么函数体是什么?此时无法解析函数体的呀?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
function x(y) {
console.log(y);
if (y==0) return;
x(y-1);
}
引擎首先解析函数声明,获知定义了一个名为x的函数对象
在解析执行函数顺序
1)console.log(y);
2) 如果y=0 退出函数执行
3) 如果不是,执行函数对象x
...
js里的递归靠栈来实现的: