什么是闭包?闭包的用途是什么?闭包的缺点是什么?

闭包: 函数 和 函数内部可以访问到的变量 总和就是一个闭包

1
2
3
4
5
6
// 变量foo  + fn函数 就是闭包
let foo = '111'
function fn(){
console.log(foo)
}
fn() // 111

闭包的用途:

  • 间接访问一个变量 ,让这个变量始终保持再内存中

即 隐藏局部变量,暴露操作函数

1
2
3
4
5
6
7
8
9
10
11
const createAdd = ()=>{
let n = 0
return ()=>{
n += 1
console.log(n)
}
}

const add = createAdd()
add() // 1
add() // 2

闭包的缺点:

  • 由于闭包会使变量始终保存在内存中,所以内存消耗会很大。
  • 闭包会在父函数外部,改变父函数内部变量的值

立即执行函数

  • 声明一个匿名函数
  • 马上调用这个匿名函数

立即执行函数的作用: 创建一个独立的作用域。这个作用域的变量,外面访问不到(即避免变量污染)