闭包的缺点

我现在的理解就是

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

因为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的函数作用域,导致内存不能释放。如果不是某些特定任务需要使用闭包,在其它函数中创建函数是不明智的,因为闭包在处理速度和内存消耗方面对脚本性能具有负面影响。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 一、变量...
    zouCode阅读 5,020评论 0 13
  • 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 一、变量...
    风萧萧易水寒_1196阅读 1,807评论 0 0
  • 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 一、变量...
    zock阅读 4,692评论 2 6
  • ● 闭包基础 ● 闭包作用 ● 闭包经典例子 ● 闭包应用 ● 闭包缺点 ● 参考资料 1、闭包基础 作用域和作...
    lzyuan阅读 4,518评论 0 0
  • 夏天到,天气炎热,酷暑难耐,下水游泳戏水是个不错的选择。 1.游泳前 某天,小妞突然闹着喊我给她买泳衣和游泳圈,说...
    冰加雪糕阅读 2,910评论 0 1