码迷,mamicode.com
首页 > 编程语言 > 详细

javascript中闭包的2种经典用法

时间:2014-11-04 19:43:34      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:闭包的经典用法   模拟c语言中的private stati   

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

 

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

function a()
{
	var i = 0;
	function b()
	{
		return ++i;
	}
	return b;
}

var c = a();
c();//1
c();//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> 


 

javascript中闭包的2种经典用法

标签:闭包的经典用法   模拟c语言中的private stati   

原文地址:http://blog.csdn.net/aitangyong/article/details/40788339

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!