个人对js闭包的理解

闭包函数的作用:

1.延长局部变量的生命周期
2.解决局部变量在外部使用

要理解闭包,必须先理解作用域的问题,作用域分为全局作用域和局部作用域.

全局作用域在脚本的任何位置都可以访问,局部作用域只在某个代码段(如函数内部)才可以被访问.说到作用域链:即 函数自己的作用域、上一层的函数的作用域....和全局作用域。访问一个变量时,自己的没有,就一层层往上找,直至全局,若还没有,就报错。

而通过闭包会使得函数外部可以访问局部变量

先举个例子:

function fun(){
var num=1;
  return  function(){//闭包
num++;
alert(num);//作用域链
}
}
关闭浏览器 或者刷新浏览器 全局变量释放?
var res = fun();
res();
res();

第一次弹出2,第二次弹出3.fun()函数返回了一个闭包函数,按正常来看,执行了res = fun()之后,num就会被释放,再次执行,num还是从1开始.但是,此函数不是,因为它返回了一个闭包,这个闭包里面的num可以访问到外部的num,它俩是有依赖关系的,闭包函数需要用到fun()的变量num,所以fun()执行后,num不会被垃圾回收.而是保持第一次访问过得值不变.一直累加.这就是闭包函数的作用,可以延长变量的声明周期,而且使得局部变量可以在外部调用.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值