标签:
在JS中,函数是一种数据类型,可以将它赋值给变量,因此函数可以这样创建:
1 var func=function(){ 2 alert("func"); 3 } 4 func();
既然函数是一种数据类型,那么同样可以将函数作为另一个函数的返回值:
1 var func=function(data1){ 2 return function(data2){ 3 alert(data1+"这是一个内部匿名函数,被返回给变量func "+data2); 4 } 5 } 6 func(1)(2);
运行结果:“1这是一个内部匿名函数,被返回给变量func 2”
上面代码中,func()()似乎有些奇怪,其实还有另一种形式:
1 var func=(function(){ 2 return function(){ 3 alert("这是一个内部匿名函数,被返回给变量func"); 4 } 5 })(); 6 func();
运行结果:“这是一个内部匿名函数,被返回给变量func 2” 注:因为最外层的function是一个匿名函数且没有赋值给其他变量,因此无法传值调用。
结合这两种情况,会发现其实fun()()等价于(function(){return function(){alert ("这是一个内部匿名函数");}})()。
理解清楚这一点,对于JavaScript中的闭包的理解会有好处!
标签:
原文地址:http://www.cnblogs.com/GeoChen/p/5494823.html