闭包相关概念:
先看来自百度百科对闭包的一个解释:闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。
说一下我的理解: 闭包就是函数嵌套函数,内部函数就是闭包
闭包在很多地方都有它的身影,比如我们的节流和防抖算法,就是基于闭包的思想。
下面看看闭包的经典例子:
(1).实现循环点击
可以使用闭包实现循环点击。ps:使用let关键字更加方便的实现循环点击事件,此处只是为了说 明,闭包也可以做循环点击事件。
(二).简单的闭包经典例子
function outFun() {
let a = 10;
function innerFun() {
console.log(a);
}
return innerFun;
}
let fun = outFun(); //把innerFun赋值给了fun
fun();
这里调用fun()输出的结果是10。说明了闭包的一个重要特性:内部函数还没有执行完成,外部函数的变量就不会被销毁
(三).闭包封装一段代码,实现模块化。
let xz = (function () {
let a = 10;
let b = 10;
function add() {
return a + b;
}
function sub() {
return a - b;
}
return {
add,
sub,
};
})();
let result1 = xz.add();
console.log(result1);
输出的result1结果是20