- 概念:函数里面声明变量且再返回一个函数(可以访问变量的函数)
- 优点:变量私有化,避免全局污染,作为当前块级全局变量使用
- 缺点:没有被销毁的变量会保留在内存,大量使用闭包造成内存泄漏,内存消耗过大
- 解决:将不再使用的变量设置为null
- 运用:防抖、节流、函数柯里化
- 防抖:防止短时间内多次触发
- 节流:规定时间触发一次
- 函数柯里化:低性能、提高复用性、实现多参函数
function dou(F, W) {
var time = null;
return function () {
clearTimeout(time)
time = setTimeout(() => {
F.apply(this, arguments)
}, W);
}
}
function throttle(F, W) {
var previous = 0;
return function () {
var now = +new Date();
if (now - previous > W) {
F.apply(this, arguments);
previous = now;
}
}
}
function currying(func, ...argu1) {
return function(...argu2) {
return func([...argu1, ...argu2])
}
}