一、闭包是:一个函数用到了外部变量,那么函数+变量就是闭包。
function f1() {
let a = 1;
function f2() {
console.log(a)
}
f2()
}
f1() //其中的变量a和函数f2就是闭包
二、闭包的用途是什么?
闭包是因为javaScript的作用域而产生的,我们在使用一个函数时,正好需要函数外面的变量
- 在顶级作用域里声明的变量就是全局变量
- 其他的是局部变量 由于js函数内部可以使用外部的变量,所以就是闭包
三、闭包的缺点是什么?
因为IE有bug,IE在我们用完闭包后,依旧不能将闭包里的变量收回 如果是面试的话,要回答闭包容易内存泄露。 注意,虽然闭包并不会造成内存泄露,真实原因是 JS 引擎的实现有问题,但网上已经以讹传讹了。 所以面试时我们依然要答出这一点。