闭包应该是js中的一个难点了,面试官们也对这个问题问的最多,自己也在这里踩了许多坑,以下先看看简单的案列
step1:先来看下简单的问题
function outer(){
var i=100;
console.log(i)
}
var result=outer();//得到100
step2:进一步了解问题
function outer(){
var i=100;
function inner(b){
console.log(b*2)
}
console.log(i)
return inner;
}
var result=outer();
result(5);//得到100,10 这里的5是传参给inner里面的b
step3:进一步了解问题
function outer(){
var i=100;
function inner(a){
console.log(a*2)
function four(b){
console.log(b*4)
}
return four;
}
console.log(i)
return inner;
}
var result=outer();
result(50)(4); 得到100,100,16 //50是传参给inner里面的a,4是传参给four里面的b
http://www.jb51.net/article/84100.htm
http://www.jb51.net/article/85775.htm