标签:aaa rip 参数 var function 开始 私有化 javascrip 报错
1.什么是闭包?
闭包的特点:
function aaa() {
var a = 1;
function bbb() {
alert(a);
}
return bbb;
}
var c = aaa();
c();
=>表达式形式
(function() {
var a = 1;
return function() {
alert(a);
}
})();
2.闭包有什么好处?
function aaa() {
var a = 1;
a++;
alert(a);
}
aaa(); //2
aaa(); //2, 每次调用aaa(),a的值都从1开始,如果想每次调用aaa()实现a值得累加,怎么办呢?——闭包
=>function aaa() {
var a=1;
function bbb() {
a++;
alert(a);
}
return bbb;
}
var c= aaa();
c(); //2
c(); //3
c(); //4 因为aaa()被执行后,变量a未被垃圾回收机制收回,而是驻扎在内存中,所以每次执行bbb(),a值就会在内存值得基础上加1
3.闭包的用法?
var c= (function(){
var a=1;
function aaa() {
a++;
alert(a);
}
function bbb(){
a++;
alert(a);
}
return {
aa : aaa,
bb : bbb
}
})();
c.aa(); //2
c.bb(); //3
alert(a); //报错,因为a私有化成员
alert(aaa()); //报错
4.闭包在IE下容易引发内存泄漏
5.闭包的核心是对参数和变量的不会被js垃圾回收机制回收特性的利用。
标签:aaa rip 参数 var function 开始 私有化 javascrip 报错
原文地址:http://www.cnblogs.com/jackyzhang20151122/p/6193934.html