闭包就是一个函数,一个外部函数通过调用函数并return返回出内部函数,这里的内部函数就是一个闭包;此时在内部函数中是可以访问到外部函数的变量的;

1
2
3
4
5
6
7
8
9
10
11
12
function a(){
const x = 1;
const y = 12;
return () => {
console.log(x + y)
}
}

const b = a()
// a() 返回闭包函数
b()
// 输出 13

优点

可以读取函数内部变量
可以避免全局污染

缺点

闭包会导致变量不会被垃圾回收机制清除,消耗内存
不恰当的闭包会造成内存泄露

作用域链、栈内存、堆内存

数据 内存地址
变量,原始数据类型 栈内存
引用类型 堆内存