匿名函数·
匿名函数就是没有名字的函数
实例
(function(){
alert("");
})();
!(function(){
alert("");
}();
闭包·
有权访问另一个函数作用域中的变量
创建闭包的常见方式,就是在一个函数内部创建另一个函数,通过另一个函数访问这个函数的局部变量
function box(){
var age= 100;
return function(){
return age;
};
}
alert(box()());
使用闭包有一个优点,也是它的缺点:就是可以把局部变量驻留在内存中。可以规避使用全局变量。(全局变量污染导致应用程序不可预测性,每个模块都可以调用必将引来灾难,所以推荐使用私有的,封装的局部变量)。
function box(){·
var age =100;
return function(){
age++;
return age;
};
}
var b = box();
alert(b())
alert(b())
例子1.
function box(){
var myarr = [];
for(var i = 0;i < 5;i++){
myarr[i] = function(){
return i;}
}
return myarr;}
// console.log(box());
alert(box());---------》[function(){},function(){},function(){},function(){},function(){},function(){},] 匿名函数数组
var b = box();//数组 //for 已经执行完毕 i = 5
for(var j = 0;j < b.length;j++){
alert(b[j]());
}-------------------》5 5 5 5 5
例子2.
function box(){
var myarr = [];
for(var i = 0;i < 5;i++){
// myarr[i] = i;
// myarr[i] = (function(){
// return i;
// })();
myarr[i] = (function(num){
return num;
})(i);
}
return myarr;
}
alert(box())---------------0 1 2 3 4
由于闭包里作用域返回的局部变量资源不会被立刻销毁回收,所以可能会占用更多的内存,过渡使用闭包会导致性能下降,建议在非常有必要的时候才使用闭包。·
使用完之后给它加null,解除引用
b=null
网友评论