概念
闭包是一种函数的用法。体现成函数内部使用了另一个函数的变量
闭包的应用
闭包的应用围绕着其可以使用另一个函数的的变量这个特点
防抖 & 节流
防抖:延时一定时间触发,若再次请求则重新延时
btn.addEventListener('click', (() => {
let timer = null
return () => {
if (timer) {
clearTimeout(timer)
}
timer = setTimeout(() => {
console.log('执行操作')
}, 1000)
}
})())
节流:一定时间内只触发一次
btn.addEventListener('click', () => {
let canClick = true
return () => {
if (!canClick) {
return
}
canClick = false
setTime(() => {
canClick = true
}, 1000)
console.log('执行操作')
}
})
柯里化
概念:优化重复参数的情况
const getArea = (width) => {
return (height) => {
return width * height
}
}
const getTenArea = getArea(10)
getTenArea(10) // 10 * 10
getTenArea(20) // 10 * 20
getTenArea(30) // 10 * 30
注意
因为闭包中对另一个函数的引用会导致另一个函数的释放问题。如果闭包一直存在则另一个函数将不会被释放