标签:
匿名函数就是没有名字的函数,或者是它把名字隐藏起来,你看不到函数名。闭包是可访问一个函数作用域
里的变量的函数,或者是就是一个函数里还有一个函数,那就是闭包。
匿名函数
//普通函数 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