码迷,mamicode.com
首页 > 其他好文 > 详细

匿名函数和闭包,第一篇

时间:2016-08-01 19:41:56      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:

匿名函数就是没有名字的函数,或者是它把名字隐藏起来,你看不到函数名。闭包是可访问一个函数作用域
里的变量的函数,或者是就是一个函数里还有一个函数,那就是闭包。

匿名函数

//普通函数
		function box(){
			return ‘link‘;
		}
		alert(box())

 

//匿名函数
		function (){     //单独的匿名函数,是无法运行的
			return ‘html‘   //就算能运行,是无法调用,因为没有名称
		}

 

//把匿名函数赋值给变量
		var box=function(){
			return ‘link‘
		};
		alert(box)     //function(){return ‘link‘}
		alert(box())   //link

 

//通过自我执行来执行匿名函数
		(function (){  //(匿名函数)();第一圆括号放匿名函数,第二个圆括号执行
			alert(‘link‘);
		})();

 

//把匿名函数自我执行的返回值赋值给变量
		var box=(function (){
			return ‘link‘;
		})();
		alert(box);   //link

 

//自我执行后用alert()打印
		alert((function(){
			return ‘link‘
		})());

 

//自我执行匿名函数的传参
		(function (age){
			alert(age);
		})(100);

 

//函数里放一个匿名函数
		function box(){
			return function(){  //闭包 
				return ‘link‘;
			}
		}
		alert(box)  //function box(){return function(){return ‘link‘;}
		
		alert(box())  //function(){return ‘link‘;}
		
		alert(box()()) //link

 

//我们还有一种执行方法
		function box(){
			return function(){  //闭包 
				return ‘link‘;
			}
		}
		var b=box();
		alert(b)//function(){return ‘link‘;}
		
		alert(b())//link

闭包
  闭包是只有权访问另一个函数作用域中的变量的函数,创建闭包的常用的方式,就是在一个函数内部创建另一个函数,
  通常另一个函数访问这个函数的局部变量。

//通过闭包访问局部变量
		function box(){
			var age=100;
			return function(){
				return age;
			}
		}
		alert(box()())

 使用闭包有一个优点,也是它的缺点:就是可以把局部变量驻留在内存中,可以避免使用全局变量。
  (全局变量污染导致应用程序不可预测性,每个模块都可调用必将引用灾难,所以推荐使用私有的,封装的局部变量)。

 //使用全局变量进行累加
		 var age=100;
		 function box(){
		 	age++;
		 }
		 alert(age)
		 box()
		 alert(age)

 

匿名函数和闭包,第一篇

标签:

原文地址:http://www.cnblogs.com/linkhtml/p/5726826.html

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