9012年的前端应知应会的知识点——闭包

2017-02-26  本文已影响0人  Kagashino

一般来说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

上一篇下一篇

猜你喜欢

热点阅读