执行上下文与执行上下文栈 - js函数高级

代码分类

  • 全局代码

  • 局部代码

全局执行上下文

  1. 在执行全局代码前将window确定为全局执行上下文(GO)

  2. 对全局数据进行预编译

  • var定义的全局变量添加为window的属性

  • function声明的全局函数添加为window的方法

  • this赋值window

  1. 开始执行代码

函数执行上下文

  1. 执行函数体前,创建对应函数执行上下文对象(AO)

  2. 对局部数据进行预编译

  • 形参变量添加为执行上下文的属性

  • arguments添加为执行上下文的属性

  • var定义的局部变量添加为执行下文的属性

  • function声明的函数添加为执行上下文的方法

  • this(调用函数的对象)

  1. 开始执行函数体代码

执行上下文只在函数执行前的一刻产生

执行上下文栈

  • 在全局代码执行前,js引擎会创建一个栈来储存管理所有的执行上下文对象

  • 待全局执行上下文(window)确定后,将其添加到栈中(压栈)

  • 函数上下文创建后,将其添加入栈中(压栈)

  • 当前函数执行完后,将栈顶的对象移除(出栈)

  • 所有代码执行完成后,栈中只存在window

posted @ 2021-07-31 16:25  独舟者  阅读(57)  评论(0)    收藏  举报