javascript的闭包

本文介绍了使用JavaScript闭包实现计数器的方法,探讨了如何避免全局变量污染,并提供了多种实现方式,包括利用命名空间来封装计数器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

闭包:函数的作用域取决于声明时,而不取决于调用时

实例:闭包计数器

多个人开发js程序,需要一个全局的计数器

多个人的函数共同用一个计数器,计数器一直增长。

 

解决办法:

1.设一个全局变量

     window.cnd=0;

调用 ++window.cnd;(这个办法可行,但是污染了全局变量  -----所以尽量避免使用全局变量)

2.闭包维护一个别人污染不到的变量,做计数器

  

function  counter(){
    var  cnt=0;     //当counter执行完毕后,除了返回的enter函数,谁也碰不到cut 变量
   var enter=function(){
 return ++cnt;
   }
return  enter;
}
var  inc=counter();
alert (inc());

 3.简化(匿名函数)

var cnt=(function(){
var cnt=0;
return function(){
  return ++cnt;
    }
})();
alert(cnt())  ;

 4.jquery的计数器插件形式

$={};
$.cnt=(function(){
 var cat=0;
   return function(){
       return  ++cnt;
   }
})();
alert($cnt());

5.个人的命名空间(把自己的函数和变量全放在一个对象中)

var sly={};
sly.cnt=(function(){

var cat=0;
   return function(){
       return  ++cnt;
   }
})();
alert(sly.cnt());

 

在实际开发中,如何避免全局变量和冲突:

1统一放在一个全局对象上,如jquery->$;

2.每一个人用自己的命名空间

 

后贴一张图:

转载于:https://www.cnblogs.com/sunliyuan/p/5737761.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值