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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。