执行上下文(execution context) EC
概念:代码执行的时候产生的环境
分类:
- 全局执行上下文:在窗口打开的时候创建,窗口关闭的时候销毁
- 局部执行上下文:在函数调用的时候产生,函数调用结束销毁
- eval执行上下文:可以将字符串当js代码运行
EC与作用域对比:
- EC 动态的,执行
- 作用域 静态的,位置
作用:用来确定当前使用的XX到底值是多少
执行栈:是一种数据结构,具有先进后出的原则,在栈顶的是正在执行的函数
EC的生命周期:
创建阶段:EC的创建基础环境(内容)
- 确定this的指向
- 建立环境记录
- 建立对外引用:指向函数“声明“处所在的环境
执行阶段:代码按顺序执行 ao(active object):激活对象
销毁阶段
环境记录:vo(variable object):变量对象
- 看参数
- 看声明式函数 命名冲突:覆盖
- var变量 命名冲突:忽略
作用域链:通过执行上下文的对外引用,可以一直向外链成一个链条,
这个链条的起点就是当前函数产生的执行上下文,链条的末尾永远是全局执行上下文,
这个链条叫做,作用域链。
作用域链的作用:找变量的