网站建设yuue,晋城市住建设局网站,实验中心网站建设,网站开发公司挣钱吗闭包 1、概念2、闭包应用防抖节流 1、概念
闭包#xff1a;就是能够读取其他函数内部变量的函数。
function fn1() {const num 100;return function(num1) {return num num1; // 该函数 使用了 父作用域里面的 num#xff0c;所以被称为闭包}
}const sumFn fn1();… 闭包 1、概念2、闭包应用防抖节流 1、概念
闭包就是能够读取其他函数内部变量的函数。
function fn1() {const num 100;return function(num1) {return num num1; // 该函数 使用了 父作用域里面的 num所以被称为闭包}
}const sumFn fn1();
fn1 null;
const sum sumFn(10);// 110num 会常驻内存不随 fn1 销毁而销毁sumFn 被销毁时num 才会被释放
console.log(sum); 2、闭包应用
闭包应用使用闭包主要是为了设计私有变量与方法避免变量污染防抖与节流。 闭包缺点常驻内存增大内存使用量使用不当易造成内存泄漏影响性能。
防抖节流
// 防抖 - n 秒后再执行该事件若在 n 秒内被重复触发则重新计时
function debounce(func, wait) {let timeout;return function () {let self this;let args arguments;if (timeout) clearTimeout(timeout);timeout setTimeout(function () {func.apply(self, args);}, wait);}
}// 节流 - n 秒内只运行一次
function throttled(func, wait) {let oldTime new Date();let timer null;return function () {let curTime new Date();let remain wait - (curTime - oldTime);let self this;let args arguments;clearTimeout(timer);if (remain 0) {func.apply(self, args);oldTime new Date();} else {timer setTimeout(func, remain);}}
}debounce(() {console.log(123);
}, 1000);