码迷,mamicode.com
首页 > Web开发 > 详细

js闭包

时间:2015-05-03 01:56:25      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
	<title>Document</title>
<script type="text/javascript">
window.onload = function(){
	/*function aaa(){
		var a = 1;
		a++;
		alert(a);
	}

	aaa();
	aaa();
	aaa();*/

	var b = (function aaa(){
		var a = 1;
		return function bbb(){
			a++;
			alert(a);
		}
	})();

	b();
	b();
}
</script>
</head>
<body>
	
</body>
</html>

  闭包其实就是函数嵌套函数,内部函数可以引用外部函数的参数和变量。函数内部的参数和变量在函数调用完成后,他们都会被js的垃圾回收机制所回收,所以上面的代码一开始虽然连续调用三次aaa();但是并不能累加a的值,因为每一次调用完之后,函数内部的a都会被回收,下一次在调用的时候,又重新生成a.但是当函数内部有嵌套了一个函数,并且引用了变量a,b()调用完之后,a并不会被收回,而是会一直存在内存中,所以这种情况下a可以被累加。

以上理解可能比较粗糙,勿喷!

js闭包

标签:

原文地址:http://www.cnblogs.com/toodeep/p/4472758.html

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