//执行栈 var exeStack = []; //先压如全局执行环境 exeStack.push('globalContext'); //遇到执行sayHello函数,ok,压进去 exeStack.push('sayHello'); //执行sayHello函数发现,还有个getMessage函数,ok,压进栈 exeStack.push('getMessage'); //执行完了getMessage函数,弹栈 exeStack.pop(); //继续执行sayHello函数,又发现有console.log这个家伙,ok,你进栈 exeStack.push('console.log'); //执行了console后,输出hello,console 弹栈 exeStack.pop(); //这时sayHello执行完,弹栈 exeStack.pop(); //最后整个代码执行完,全局环境弹栈 exeStack.pop();
执行栈图示:
这里主要是js在执行时的一个总体过程,但是你们可能会疑惑,压进栈里面的一块块(抽象)东西到底包含的是什么?
我可以告诉你们是,执行上下文,global是指全局的的执行上下文,其他的是函数执行上下文,那到底这些上下文包含什么,我会在下一篇详解。
五、小结
这篇主要是将js单线程是什么,并且怎么实现单线程的,先有个总体js执行过程的印象,下一篇会详细写js执行的细节,执行上下文。