美文网首页JS
函数的闭包

函数的闭包

作者: 小飞侠zzr | 来源:发表于2017-10-10 20:20 被阅读0次

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

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

内存泄漏

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

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);
}

相关文章

  • 如何理解闭包?

    1、定义: 嵌套在函数作用域中的函数,称为闭包函数。该作用域称为闭包环境。通过闭包函数可以访问闭包函数所在函数作用...

  • 关于逃逸闭包

    逃逸闭包:当函数执行结束后,才去调用函数内部的闭包,叫做逃逸闭包非逃逸闭包当函数执行过程中,执行的函数内部的闭包,...

  • 3.逃逸闭包,非逃逸闭包

    逃逸闭包:当函数执行结束后,才去调用函数内部的闭包,叫做逃逸闭包非逃逸闭包:当函数执行过程中,执行的函数内部的闭包...

  • (9) python之闭包

    闭包闭包 = 函数 + 环境变量(函数定义的时候) 一个最简单的闭包 闭包不受外部变量影响 非闭包 闭包 闭包 只...

  • JS的闭包

    1.闭包的概念 闭包函数:声明在一个函数中的函数,叫做闭包函数。闭包:内部函数总是可以访问其所在的外部函数中声明的...

  • 面试题(day-2)

    1 ,什么是闭包?闭包有什么好处?使用闭包要注意什么? 闭包:函数嵌套函数,内部函数可以引用外部函数的参数和变量,...

  • python函数之闭包

    目录 python函数之闭包什么是闭包python中的namespace闭包的条件闭包的优点 python函数之闭...

  • 闭包和立即执行函数

    闭包闭包:内部的函数引用了外部的函数的变量,则产生闭包。闭包的作用:把变量封装在函数中,只有内部函数可以用,让函数...

  • day14-函数(3)装饰器

    一、闭包函数 闭包函数=函数嵌套定义+函数对象+名称空间与作用域 闭包函数 1、闭:指的是该函数是定义在一个函数内...

  • 闭包函数

    闭包函数 闭包,又称闭包函数或者闭合函数,其实和嵌套函数类似,不同之处在于,闭包中外部函数返回的不是一个具体的值,...

网友评论

    本文标题:函数的闭包

    本文链接:https://www.haomeiwen.com/subject/clpbyxtx.html