一、闭包是:一个函数用到了外部变量,那么函数+变量就是闭包。

function f1() {
    let a = 1;
    function f2() {
        console.log(a)
    }
    f2()
}
f1() //其中的变量a和函数f2就是闭包

二、闭包的用途是什么?

闭包是因为javaScript的作用域而产生的,我们在使用一个函数时,正好需要函数外面的变量

  • 在顶级作用域里声明的变量就是全局变量
  • 其他的是局部变量 由于js函数内部可以使用外部的变量,所以就是闭包

三、闭包的缺点是什么?

因为IE有bug,IE在我们用完闭包后,依旧不能将闭包里的变量收回 如果是面试的话,要回答闭包容易内存泄露。 注意,虽然闭包并不会造成内存泄露,真实原因是 JS 引擎的实现有问题,但网上已经以讹传讹了。 所以面试时我们依然要答出这一点。