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