JavaScript闭包的概念

什么是闭包?闭包的用途是什么?闭包的缺点是什么?

  1. 闭包:闭包是指有权访问另外一个函数作用域中的变量的函数。
  2. 用途:参考末尾示例代码
    • 可以读取函数内部的变量:通过inner访问outter内部变量val
    • 让这些变量的值始终保持在内存中:val的值一直保存在内存中,不会随着outter函数调用结束而消逝
  3. 缺点:由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露
    解决方法:在退出函数之前,将不使用的局部变量全部删除。

示例代码:

function outter() {
    let val = 100;
    function inner() {
        console.log(val);   //访问outter内部变量val
    }
    return inner;   //将inner函数的引用作为返回值
}
const foo = outter(); //将inner函数的引用传递给foo
foo();  //输出:100

你可能感兴趣的:(JavaScript闭包的概念)