定义:
外层函数返回一个内层函数;
内层函数引用外层函数中的变量;
个人理解
主要改变了函数内部词法作用域的关系,使得函数外可以反问函数内部的私有内容
由于其会返回内层函数,内层函数又引用外层函数的变量,导致外层函数执行完后并不会被垃圾回收,因为内层函数由winodw引用,外层函数变量又由内层函数引用
好处: 可以使用闭包做模块化处理;
直接上代码:
function outFun() {
var a = 1
return function innerFun() {
console.log(a)
}
}
var bar = outFun()
bar() // 1
注意: (function(){}())自调函数不是闭包,因为其函数不是在其本身词法作用域外执行的;