es-闭包
闭包(内层函数+外层函数变量)
举个例子
function outer(){
let i = 1
function fn(){
console.log(i)
}
return fn
}
const fun = outer()
fun()
fun()这个函数可以读取到outer()中的变量
fun是全局的,根据js回收机制中标记清除法,从fun中可以找到i,所以i变量i不会被清除。
关于闭包实现数据私有
举个例子
function outer(){
let i = 0
function fn(){
i++
console.log(i)
}
return fn
}
const fun = outer()
i=1000
fun()
i为局部变量,无法被外部修改,最后输出为1,不会为1001。