执行上下文(Execution Context)
JavaScript代码执行时,会进入到一个执行上下文中。执行上下文可以理解为当前代码的运行环境。
JavaScript中的运行环境大概包括三种情况:
全局环境:代码运行起来时会首先进入全局环境
函数环境:当函数被调用执行时,会进入当前函数中执行代码
eval环境:不建议使用,这里不做介绍
因此我们可以预见的是,在一个JavaScript程序中,必定会出现多个执行上下文。
JavaScript引擎会以栈的方式来处理它们,这个栈,就是我们前面多次提到的函数调用栈(call stack)。函数调用栈规定了JavaScript代码的执行顺序。栈底永远都是全局上下文,栈顶则是当前正在执行的上下文。
当代码在执行过程中遇到以上几种情况,都会生成一个执行上下文并放入函数调用栈中,处于栈顶的上下文执行完毕之后,会自动出栈。
为了更加清晰的理解整个过程,我们可以通过几个实例来了解函数调用栈的执行规则。