对于前端人员面试,出现频率最多也是让人最头疼的就是面试官说:“请简单谈一谈你对闭包的理解”。对于这一个几乎快被人问烂的问题,屡屡出现在我们面试或被面试的过程中的原因很简单--我们一直都在接触闭包,却很少去正确地对待它。
因为闭包是因为JS的一些语言特性而形成的,所以在谈它之前我们首先要了解一下的知识点
1.执行上下文
2.作用域
3.垃圾回收机制
4.函数嵌套
本文只会简单的谈涉及到的内容,如果知识点有遗漏的同学可以自行google,接下来让我们进入正题!
1. 什么是闭包?
关于什么是闭包让我们先看看《高级程序设计》和《JavaScript权威指南》中的说法:
《高程》: 闭包是指有权访问另一个函数作用域中的变量的函数,创建闭包的常见方式,就是在一个函数内部创建另一个函数。

