本来以为闭包很简单,只是一个函数引用另一个函数的变量.但为什么要这样做呢.
function a(){
var a =1;
function inner(){
return a;
}
return inner();
}//1
function b(){
var b=1;
return b;
}//1
两段代码一样 为何要多此一举.实际关键在于inner的().
return inner代表返回inner的指针 return inner()代表返回inner的值.
再来段代码就能发觉其中区别
function a(){
var a =1;
function inner(){
return a++
}
return inner;
}
b=a();
b();//1
b();//2
b();//3
因为变量a一直被引用 所以不会被回收.可以用来封装私有变量.
function a(){
var a =1;
function inner(){
return a++
}
return inner();
}
a();//1
a();//1
返回a并没有被持续引用,return inner()后就被垃圾回收了
明白了8铁汁们
网友评论