关于闭包 vue3 防抖 节流

闭包好像成了面试题必考,干脆就学一下。
我暂时理解的闭包:一个函数中嵌套着另一个函数,这个函数就是闭包。闭包不会内存泄露,也不会被清除。所以不能滥用,滥用会导致内存过大。
//开始学习:
基础的概念:JS的执行上下文。就是JS是有作用域的,一个全局作用域,一个是函数里面的块级作用域。


image.png

日常使用闭包的地方:防抖、节流。
防抖:执行多次后的最后一次。比如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(){}() //要加上立即执行

你可能感兴趣的:(关于闭包 vue3 防抖 节流)