我暫時理解的閉包:壹個函數中嵌套著另壹個函數,這個函數就是閉包。閉包不會內存泄露,也不會被清除。所以不能濫用,濫用會導致內存過大。
//開始學習:
基礎的概念:JS的執行上下文。就是JS是有作用域的,壹個全局作用域,壹個是函數裏面的塊級作用域。
日常使用閉包的地方:防抖、節流。
防抖:執行多次後的最後壹次。比如10秒內點了10下button,執行的是第十下click事件,在延遲多少秒後。
節流:在10秒內執行第壹次點擊、在第二個10秒執行第二個10s的第壹次點擊。
``var timer = null,
last = 0;
//請把這個放外面
const methods = {
fd() {
methods.debounce(add, 1000);
},
jl() {
methods.throttle(addjl, 700);
},
// 節流
throttle(fn, delay) {
return (function (...args) {
var nowTime = Date.now();
if (nowTime - last > delay) {
last = nowTime;
fn.call(this, args);
}
})();
},
// 防抖
debounce(fn, delay) {
return (function (...args) {
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(() => {
fn.call(this, args);
// console.log("");
// fn();
}, delay);
})();
},
};`
vue3和傳統的防抖不執行,再return function(){}() //要加上立即執行