闭包是js一个概念,描述了作用域上的联系。
在js中只有内部作用域能访问外部作用域,如果需要暴露内部作用域则需要闭包(js的模块化的概念也源于此,避免了变量污染以及作用域间的相互引用)。
对闭包的理解
闭包简单来说就是提供外部作用域访问内部作用域的一个途径,所以闭包必然返回一个引用(大多数是函数,实际上一个对象也可以实现功能),例如:
function id () {
let count = 1
return () => {
return count++
}
}
function myMoney () {
let money = 10
return {
income (count) {
money += count
},
const (count) {
money -= count
},
show () {
return money
}
}
}