js闭包

函数外部可以获取到函数内部定义的变量,这个叫做闭包。这个例子中,就是fn2, 即内部函数。
闭包的特点是,它能“记住”自己诞生的全局作用域/父级作用域中的环境。比如fn2记住了自己诞生的环境是fn1. 本质上,闭包就是函数内部和函数外部的链接桥梁。

使用闭包需要小心内存泄漏问题。最后可以将inc置为null.


IIFE: 定义函数之后,加上(), 表示立即调用。
常用的两种写法:
(function(){})();
(function(){}());
通常情况下,写自执行函数的时候,前面可以加个叹号,避免前面语句没有加分号导致报错。
IIFE可以减少对全局变量的污染
var add = (function () {
var count = 0;
return {
return ++count;
}
})();
闭包的经典错误:

解决方案:

