闭包的用途及优缺点

1,376 阅读1分钟

什么是闭包

定义

闭包当一个函数的返回值是另外一个函数,而返回的那个函数如果调用了其父函数内部的变量,且返回的这个函数在外部被执行,就产生了闭包,简单说闭包就是一个环境,能够读取其他函数内部的变量。本质上,闭包是将函数内部和函数外部连接起来的桥梁。

用处:

1.读取函数内部的变量;

2.这些变量的值始终保存在内存中,不会在外层函数调用后被自动清除。

优点:

1.变量长期存储在内存中;

2.避免全局变量的污染;

3.私有成员的存在;

特性:

1.函数套函数;

2.函数内部可以直接使用外部函数的变量或者参数;

3.变量或参数不会被垃圾回收机制回收

缺点:

常驻内存,会加大内存的使用量,可能会造成内存泄漏;

例如下面这段代码就是一个闭包:

function fn(){
    let n=111;
    function fs(){
        alert(n); }
        return fs;
    }
let result=fn();
result(); // 111