一般来说js外部作用域无法访问函数内的变量,原因在于函数调用过后,内部变量会被回收,比如:
function family(){
var father = "王健林";
}
console.log(father);//father is not defined
如果我们返回一个函数,就可以通过作用域链访问:
function family(){
var father = "王健林";
var son = "王思聪";
return ()=>son;
}
var getFamily = family()();//'王思聪'
因为引用了函数内部变量故形成了闭包
优点:避免namespace污染
缺点:垃圾回收困难,解决:getFamily设为null