javaScript(作用域与闭包)

154 阅读1分钟

执行期上下文

  • 当函数执行时,会创建一个成为执行上下文(execution context)的环境,分为创建和执行两个阶段
创建阶段

创建阶段,指函数被调用但还未执行任何代码时,此时创建了一个拥有3个属性的对象:

executionContext = {
  scopeChain: {}, // 创建作用域链(scope chain)
  variableObject: {}, // 初始化变量、参数、形参
  this: {} // 指定this
}









闭包是指那些能够访问全局变量的函数

当内部函数被保存到外部时,将会生成闭包。

闭包会导致原有作用域链不释放,造成内存泄露(内存占用)


闭包的作用:

  • 实现公有化变量
  • 可以做缓存(存储结构)
  • 可以实现封装,属性私有化
  • 模块化开发防止污染全局变量