一、执行上下文和作用域链
在理解什么是闭包之前,需要先简单解释下什么是执行上下文和作用链。
1.执行上下文
定义:评估和执行JavaScript代码的环境
分类:
- 全局执行上下文
-创建window对象(浏览器) -this指向这个对象
- 函数执行上下文
-函数调用时 -this指向被调用的对象/未指定则为全局对象
- eval执行上下文
创建执行上下文时的操作:-this绑定 -作用域链 -变量环境
执行栈:后进先出
详细学习执行上下文:[译] 理解 JavaScript 中的执行上下文和执行栈
2.作用域链
作用域:代码中定义变量的区域
在找变量对象时,会从当前的执行上下文找;若没找到则在父级执行上下文找;如此,若没找到则在全局执行上下文中找。
详细学习作用域链:JavaScript深入之作用域链
二、闭包
详细学习闭包:Javascript闭包详解(含闭包高频面试题)