闭包

原创 2016年10月23日 09:34:12
<!DOCTYPE html>
<html>
<head>
	<title>闭包2</title>
	<meta charset="utf-8">
</head>
<body>
	<script type="text/javascript">
		//闭包最大用处有两个,一个是前面提到的可以读取函数内部的变量。但是使用的时候不可以直接写出来,只能迂回获取
		//另一个就是让这些变量的值始终保持在内存中。
		//result实际上就是闭包f3函数。它一共运行了两次,第一次的值是999,第二次的值是1000。这证明了,函数f2中的局部变量n一直保存在内存中,并没有在f2调用后被自动清除。
		function f2(){
	      var n=999;
	      nAdd=function(){n+=1}
	      function f3(){
	        alert(n);
	        }
	        return f3;
	      }
			  var result=f2();
			  result(); // 999
			  nAdd();//因为上面定义的时候其实全局变量,所以此时不会报错。
			  result(); // 1000


		 function f1(){
      var n=999;
      var nAdd=function(){ alert(n+=1);}
      function f2(){
        nAdd();
        }
        return f2;
      }
		  var result=f1();
		  result(); // 1000
		  result();//1001

//1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。
			
	</script>
</body>
</html>

相关文章推荐

传递闭包算法

  • 2017年08月23日 15:37
  • 285B
  • 下载

js闭包实例

  • 2016年12月17日 17:17
  • 84KB
  • 下载

深入理解javascript原型和闭包(6)——继承

转载自:http://www.cnblogs.com/wangfupeng1988/p/3979985.html 为何用“继承”为标题,而不用“原型链”? 原型链如果解释清楚了...

swift_函数和闭包

  • 2016年04月22日 17:47
  • 8KB
  • 下载

闭包与回调代码

  • 2015年01月28日 21:09
  • 549B
  • 下载

深入理解JavaScript的闭包特性 如何给循环中的对象添加事件

深入理解JavaScript的闭包特性如何给循环中的对象添加事件 初学者经常碰到的,即获取HTML元素集合,循环给元素添加事件。在事件响应函数中(event handler)获取对应...

初探swift语言的学习笔记三(闭包-匿名函数)

swfit 中匿名函数的使用
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:闭包
举报原因:
原因补充:

(最多只允许输入30个字)