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的异步机制。