闭包

是一个函数以及其捆绑的周边环境状态(lexical environment,词法环境)的引用的组合。换而言之,闭包让开发者可以从内部函数访问外部函数的作用域。在 JavaScript 中,闭包会随着函数的创建而被同时创建。

创建闭包

1
2
3
4
5
6
7
8
const getName = (function (name) {
return function () {
return name
}
})('benz')

// name值除该方法外无法被其他方法访问
getName()

作用

实现私有方法个私有变量

性能问题

垃圾回收