闭包的缺点

我现在的理解就是

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

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

你可能感兴趣的:(闭包的缺点)