"官方“解释:比保湿一个拥有许多变量和绑定了这些变量的环境表达式(通常是一个函数),因而这些变量也是表达式的一部分。
通俗的讲:js中的function都是一个闭包。嵌套的function所产生的闭包更为强大,也是大部分时候我们所谓的闭包。
函数内部的函数被外界一个变量引用的时候,就创建了一个通常所谓的闭包。
闭包就是在构造函数体内定义另外的函数座位们表对象的方法函数,而这个对象的方法函数反过来引用外层函数体中的临时变量。这使得只要目标对象在生存期内始终保持其方法,就能简介保持原构造函数体当时用的的临时变量值。
闭包的应用场景:
- 保护函数内的变量安全
- 在内存中维持一个变量。
- 通过保护变量的安全实现js私有属性和私有方法(不能被外部访问)