面试复习:请解释什么是闭包?(执行上下文/作用域链/闭包)

141 阅读1分钟

一、执行上下文和作用域链

在理解什么是闭包之前,需要先简单解释下什么是执行上下文和作用链。

1.执行上下文

定义:评估和执行JavaScript代码的环境

分类:

  • 全局执行上下文

                    -创建window对象(浏览器) -this指向这个对象

  •            函数执行上下文

                    -函数调用时 -this指向被调用的对象/未指定则为全局对象

  •            eval执行上下文

创建执行上下文时的操作:-this绑定 -作用域链 -变量环境

执行栈:后进先出

详细学习执行上下文:[译] 理解 JavaScript 中的执行上下文和执行栈

2.作用域链

作用域:代码中定义变量的区域

在找变量对象时,会从当前的执行上下文找;若没找到则在父级执行上下文找;如此,若没找到则在全局执行上下文中找。

详细学习作用域链:JavaScript深入之作用域链

二、闭包

详细学习闭包:Javascript闭包详解(含闭包高频面试题)