为了账号安全,请及时绑定邮箱和手机立即绑定

javascript 在解析函数时候的流程

javascript 在解析函数时候的流程

回首忆惘然 2019-04-21 20:36:55
见如下代码functionx(y){console.log(y);if(y==0)return;x(y-1);}运行x(5)结果就是将会log出543210这些东西,但是问题来了,当js引擎遇到这个语句的时候,他是如何解析的。如果是先解析内部的话,遇到x(y-1)的时候就会向上寻找x函数,但是此时x函数并创建,那么是怎么找到x函数的呢?如果是先创建函数的话,那么函数体是什么?此时无法解析函数体的呀?
查看完整描述

2 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

js里的递归靠栈来实现的:
==>y=5,x(5),console.log(5)x(5)|
==>y=4,x(4),console.log(4)x(4)|x(5)|
==>y=3,x(3),console.log(3)x(3)|x(4)|x(5)|
==>y=2,x(2),console.log(2)x(2)|x(3)|x(4)|x(5)|
==y=1,x(1),console.log(1)x(1)|x(2)|x(3)|x(4)|x(5)|
==>y=0,x(0),console.log(0)x(0)|x(1)|x(2)|x(3)|x(4)|x(5)|
==>outstackx(1)|x(2)|x(3)|x(4)|x(5)|
==>outstackx(2)|x(3)|x(4)|x(5)|
==>outstackx(3)|x(4)|x(5)|
==>outstackx(4)|x(5)|
==>outstackx(5)|
==>outstackemptystack|
                            
查看完整回答
反对 回复 2019-04-21
  • 2 回答
  • 0 关注
  • 367 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信