javascript中闭包的2种经典用法

来源:互联网 发布:淘宝店铺装修轮播 编辑:程序博客网 时间:2024/05/17 03:17

闭包这个东西,网上有很多介绍资料。个人看了很多,还是一知半解。这里不做理论介绍,直接给出2个例子。

 

代码1:记录函数被调用的次数

function a(){var i = 0;function b(){return ++i;}return b;}var c = a();c();//1c();//2

这种方式类似C语言中的private static变量,能够保持局部变量的内存不释放。

 


代码2:正确给DOM注册事件处理函数

<body><input type="button" id="b1" value="1"><input type="button" id="b2" value="2"><input type="button" id="b3" value="3"><input type="button" id="b4" value="4"><script type="text/javascript">   var buttons = document.getElementsByTagName("input");  for (var i = 0; i < buttons.length; i++) {    // 方式1:i的值一直是3//buttons[i].onclick = function() {    //console.log(i + " was clicked.");    //}    // 方式2:从0到3,是我们要的效果(function(i){ buttons[i].onclick = function() {    console.log(i + " was clicked."); }})(i);}  </script>    </body> 


 

0 0