函数的闭包

闭包 函数内部的函数会形成闭包
闭包里面使用局部变量和函数参数的时候,用的就是外部函数的局部变量。
弊端:闭包会导致函数运行结束之后局部变量的空间不会被释放,从而造成内存泄漏,(执行的次数越多,占用的内存越多)

变量的作用域,局部变量,是在函数内部声明的,局部变量不可以在函数外面使用
本质原因:函数在被调用的时候会入栈,并且分配空间,函数内部的变量都是在这块空间声明的,当函数
运行完毕之后就会出栈,系统回收空间,函数颞部的变量空间也会被回收,所以不能再函数外面使用函数内部定义的变量。

内存泄漏

函数内部的函数可以形成闭包。

function fn(){
var a = 10;
function in1(){
console.log(++a);
}
function in2(){
console.log(++a);
}
return [in1, in2];
}
var arr = fn();
var f1 = arr[0];
var f2 = arr[1];
f1();
f1();
f1();
f1();
f1();
f2();

打印结果

11
12
13
14
15
16

闭包的应用场景

利用闭包可以保存局部变量

for(var i = 0;i<divS.length;i++){
(function(){
var a=i;
divS[i].onclick=function(){
setTimeout(function(){
console.log(a+1);
},1000);
}
})();
}

传参 利用闭包可以保存参数

for(var i = 0;i<divS.length;i++){
(function(a){
divS[i].onclick=function(){
setTimeout(function(){
console.log(a+1);
},1000);
}
})(i);
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ● 闭包基础 ● 闭包作用 ● 闭包经典例子 ● 闭包应用 ● 闭包缺点 ● 参考资料 1、闭包基础 作用域和作...
    lzyuan阅读 1,083评论 0 0
  • 1.什么是闭包 http://blog.csdn.net/XIAOZHUXMEN/article/details/...
    overflow_hidden阅读 425评论 1 1
  • 函数的闭包是个老生常谈的话题,但说起闭包,还是很难透彻的理解它的含义,在很多应用中都要使用闭包实现,要想搞明白函数...
    马大哈tt阅读 500评论 0 1
  • 三、闭包和高阶函数 3.1 闭包 3.1.1 变量的作用域 所谓变量的作用域,就是变量的有效范围。通过作用域的划分...
    梁同学de自言自语阅读 1,568评论 0 6
  • 可能性去了远方 远方的大地上再再次裂出一道缝隙 睁开眼 注视 里面是汹涌的浪 火红的颜色
    关馨仁阅读 126评论 0 2

友情链接更多精彩内容