1.什么是闭包?
闭包就是在一个函数中,声明了一个变量,在这个函数中又有一个函数,里面的方法引用了这个变量,导致第一个函数运行完了无法对变量进行
回收,就形成了闭包。
简单的闭包实现
function(){
let a=12;
document.body.onclick=function(){
alert(a);
}
}
复制代码
一般来说,一个函数在执行完之后,就会被回收,释放资源。但是在这个函数中,变量a因为有了在body上面点击的引用,导致变量a无法被回收,
一直存在,所以被称作闭包。闭包能够使一个变量无法被系统回收。
闭包能够用在什么地方呢?
1.可以创造私有变量
2.节流防抖需要利用闭包的特性
因为js没有像java那样的访问修饰符(public,private,protect等),所以无法做到对于一个变量的不直接修改,而要想做到这点,使用闭包可以
提供解决方法。
function show() {
let num = 12;
return {
get() {
console.log(this);
return num;
},
set(val) {
//可以加上判断
num = val;
return true;//return true是告诉js这次修改是正确的。不然可能会有问题
}
}
}
let a = show();
console.log(a.get());//12
a.set(22);
console.log(a.get());//22
复制代码
这样就避免了直接对属性的修改,也能够进行判断。
以上为个人理解,如有不对,请留言
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END