执行期上下文
- 当函数执行时,会创建一个成为执行上下文(execution context)的环境,分为创建和执行两个阶段
创建阶段
创建阶段,指函数被调用但还未执行任何代码时,此时创建了一个拥有3个属性的对象:
executionContext = {
scopeChain: {}, // 创建作用域链(scope chain)
variableObject: {}, // 初始化变量、参数、形参
this: {} // 指定this
}闭包是指那些能够访问全局变量的函数
当内部函数被保存到外部时,将会生成闭包。
闭包会导致原有作用域链不释放,造成内存泄露(内存占用)
闭包的作用:
- 实现公有化变量
- 可以做缓存(存储结构)
- 可以实现封装,属性私有化
- 模块化开发防止污染全局变量