简单理解闭包

本来以为闭包很简单,只是一个函数引用另一个函数的变量.但为什么要这样做呢.

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铁汁们

你可能感兴趣的:(简单理解闭包)