3.执行上下文栈
JS引擎并非一行一行地分析和执行程序,而是是”一段一段”执行的。
每当JS引擎遇到”一段”可执行代码,将为这”段”代码创建一个新的执行上下文.
“一段可执行代码”有三种:全局代码、函数代码、eval代码。
执行上下文栈就是用于管理这些执行上下文.
JS开始执行时首先会遇到全局代码,栈内压入一个全局上下文.
当程序结束之前,栈底部永远有个全局上下文.
当执行到一个函数的时候,就会创建该函数的执行上下文,压入执行上下文栈.
当函数执行完毕的时候,就会将函数的执行上下文从栈中弹出.