美文网首页
闭包的缺点

闭包的缺点

作者: 太妃榛果拿铁 | 来源:发表于2020-03-28 00:59 被阅读0次

    我现在的理解就是

    闭包就是一个函数,这个函数能访问其他函数的作用域。

    因为JavaScript的函数比较特殊,

    • 函数内部能访问外层作用域上的变量(作用域、作用域链)
    let a = 1;
    function f() {
        console.log(a);
    }
    f();
    
    • 函数内能声明函数、或者创建函数表达式
    function f1() {
        let sth = '本该销毁的变量';
        // 能在f1函数里,声明f2函数
        function f2() {
            console.log(sth);
        }
        // 通过return、事件绑定,将内部函数保存到了外部
        return f2;
    }
    let f2 = f1();
    f2();
    
    结果

    在上面,就形成了一个闭包。
    正常来说,一个函数执行完,函数作用域内变量的应该销毁,而闭包f2却能访问到f1的函数作用域,导致内存不能释放。如果不是某些特定任务需要使用闭包,在其它函数中创建函数是不明智的,因为闭包在处理速度和内存消耗方面对脚本性能具有负面影响。

    相关文章

      网友评论

          本文标题:闭包的缺点

          本文链接:https://www.haomeiwen.com/subject/ynmduhtx.html