简单理解javascript的闭包

看过网上关于javascript的闭包的概念和分析,看完之后都是一头雾水,完全不懂,零度我本来就对于概念性的东西很烦躁,没办法,硬着头皮翻阅了很多的资料,总算理清了一点头绪,现在分享给大家,错误之处还请大家指正!

闭包,简单的定义就是能够读取到函数内部变量的函数,最简单的形式就是:

function fn1 () {
    var a=2;
    function fn2 () {
    alert(a);
    }
    return fn2;
}
fn1()(); // 2
alert(a); // undefined

这里,第一次会弹出2,第二次弹出undefined,大家可以看到,我们可以用fn2函数来读取到fn1函数的内部变量a,而直接读取则是undefined。这里的fn2其实就是闭包。

综上所述,闭包就是我们想要获取到一个函数内部的变量,在这个函数的内部放一个函数,用来获取到当前函数的内部变量,而放入的这个函数就是闭包。

原文地址:https://www.cnblogs.com/lingdublog/p/6483312.html