关于javascript执行上下文堆栈
本文介绍了关于javascript执行上下文堆栈的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
程序开始后,进入全局上下文,将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
这篇关于关于javascript执行上下文堆栈的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文