84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
程序开始后,进入全局上下文,将Global EC push到堆栈底部,执行函数1时,进入函数上下文EC1,并将EC1 push到堆栈中,假如函数1很耗时,函数1没有执行完毕的时候调用了函数2,函数2会push进栈吗?
fun1();//耗时 fun2();
比如下图,如果context n+1先执行完了,他上面有context n+2挡,context n+1怎么pop出栈?
欢迎选择我的课程,让我们一起见证您的进步~~
你这问题问的真是奇怪……先说一点:JS是单线程的
你所谓调用函数2是怎么调用的?是在函数1内部代码调用的?还是说你是认为像是事件或者是异步回调调用了它?如果是在函数1内部代码本身就调用了函数2,那么这时候程序进程肯定是进入了函数2里面去,如果是后者,那么函数2将会等待当前函数1执行完毕再执行。
事件
异步回调
导致栈里既有函数1又有函数2。这有什么问题吗?很难以理解吗?我不懂你在疑惑什么……
函数1没有执行完毕的时候调用了函数2,哪个会先执行完。这个问题同1
你画的图只适用于同步的函数调用,对于异步的方法,你可以查查js的异步机制。
你这问题问的真是奇怪……
先说一点:JS是单线程的
你所谓调用函数2是怎么调用的?是在函数1内部代码调用的?还是说你是认为像是
事件
或者是异步回调
调用了它?如果是在函数1内部代码本身就调用了函数2,那么这时候程序进程肯定是进入了函数2里面去,如果是后者,那么函数2将会等待当前函数1执行完毕再执行。
导致栈里既有函数1又有函数2。
这有什么问题吗?很难以理解吗?我不懂你在疑惑什么……
函数1没有执行完毕的时候调用了函数2,哪个会先执行完。
这个问题同1
你画的图只适用于同步的函数调用,对于异步的方法,你可以查查js的异步机制。