前言:
我们这次来谈谈js中的闭包。
首先:闭包是个什么东西呢?
简单来说:闭包就是能访问其他函数内部变量的函数,也可以说被嵌套的函数就叫做闭包函数
举例:
function add(){
var count =0 ;
function fun(){
return count++ ;
}
return fun;
}
var f1 =add();
//f1 ==fun :把局部的变成全局的,延长生命周期,每次通过f1来调用上面的方法后,这个方法在内存中一直存在着,count也存在着
console.log(f1());
//这里结果就是1 ,它的运行思路就是,f1()的时候,调用我们add()函数里面return的函数fun(),然后又调用count++ ,所以这里最终结果为 1
再来:说一说使用闭包的优点:
1> 正常函数执行完毕后,里面声明的局部变量被垃圾回收处理掉,但是闭包1可以让作用于里的变量,在函数执行完成后依旧保持没有被垃圾回收机制处理掉
2> 可以读取函数内部的变量,让这些变量的值始终保持在内存中
3> 增加块级作用域
最后:说一说使用闭包应该注意的事项:
使用闭包的注意事项:
* 由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页性能问题,在IE中可能导致内存泄漏。
* 闭包会在父函数外部改变父函数内部变量的值。
* 写闭包一定要使用var,使用let的话,会失去闭包的意义。
来源:CSDN
作者:Ponnenult
链接:https://blog.csdn.net/weixin_44727080/article/details/104564786