javascript 在解析函数时候的流程

见如下代码
functionx(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函数的呢?
如果是先创建函数的话,那么函数体是什么?此时无法解析函数体的呀?
回首忆惘然
浏览 368回答 2
2回答

慕婉清6462132

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|
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript