1、做数据的隐藏 -->不希望数据被外部所访问2、做一个cache(缓存)-->小工具
什么是闭包
1、局部变量 2、返回值是函数 3、返回值函数中使用父级的变量当不希望一个变量造成全局污染,又常驻内存,就使用闭包
function go(){ let a = 100 return function(){ console.log(a); }}var fn = go()当函数调用完毕之后a的内存会马上释放// fn是全局变量,它没有调用a的内存就不会释放掉fn()
闭包的实例
使用一个闭包函数,可以设置和获取内存,但是没办法直接获取内存 function createCache(){ const data = {}//闭包中的数据是隐藏,不return外部没办法直接访问 return { set:function(key,val){ data[key] = val }, get:function(key){ return data[key] } }}var obj = createCache()obj.set("name","cheng")console.log(obj.get("name"));
闭包封装函数防抖
<button id="btn">btn</button><script> var btn = document.getElementById("btn") btn.addEventListener("click",debounce(function(){ console.log(this.id); })) function debounce(fn,delay=500){ let timer return function(){ if(timer){ clearTimeout(timer) } timer = setTimeout(()=>{ fn.call(this) },delay) } }</script>