执行上下文
执行上下文概念
执行上下文(Execution Context):函数执行的准备工作(也称执行上下文环境)
运行JavaScript代码的时候,当代码执行进入一个环境时,就会为该环境创建一个执行上下文,它会在运行代码前做一些准备工作,如:确定作用域、创建局部变量对象等。
JavaScript中执行环境
1、全局环境
2、函数环境
3、eval函数环境
与之对应的执行上下文类型有
1、全局执行上下文
2、函数执行上下文
3、eval函数执行上下文
JavaScript中管理多个执行上下文
函数编程中,代码中会声明多个函数,对应的执行上下文也会产生多个。在JavaScript中,通过栈的存取方式来管理执行上下文,我们可以称其为执行栈,或函数调用栈(Call Stack)。
总结栈数据结构的特点:
1.先进后出,后进先出
2.出口在顶部,且仅只有一个
首先来看一个示例:
堆栈示意图如下:
执行上下文的生命周期:
1、创建阶段(进入执行上下文):函数被调用时,进入函数环境,为其创建一个执行上下文,此时进入创建阶段。
2、执行阶段(代码执行):执行函数中代码时,此时执行上下文进入执行阶段。
1、创建变量对象
·函数环境会初始化创建 Arguments 对象,形式参数(并赋值)
·普通函数声明(并赋值)
·局部变量声明,函数表达式声明(未赋值)
2、初始化作用域链
3、确定 this 指向(this由调用者确定)
4、确定作用域