JavaScript闭包作用之一——延续局部变量的寿命

JavaScript中闭包的作用不少,这里就不一一例举了,今天要说的是利用闭包延续局部变量的寿命在工作中的使用场景。
工作中img 对象经常用于进行数据上报,如下所示:

var report = function( src ){ 
   var img = new Image(); 
   img.src = src; 
}; 
report( 'http://xxx.com/getUserInfo' );

但是因为一些低版本浏览器的实现存在 bug,在这些浏览器下使用 report 函数进行数据上报会丢失 30%左右的数据,也就是说,report 函数并不是每一次都成功发起了 HTTP 请求。丢失数据的原因是 img 是 report 函数中的局部变量,当 report 函数的调用结束后,img 局部变量随即被销毁,而此时或许还没来得及发出 HTTP 请求,导致请求丢失掉。

而把 img 变量用闭包封闭起来,便能解决请求丢失的问题:

var report = (function(){
	var imgs = [];
	return function(src){
		var img = new Image();
		imgs.push(img);
		img.src = src
	}
})();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI小美好

感恩打赏让我坚定努力的方向

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值