闭包


闭包是什么

闭包是指有权访问另一个函数作用域变量的函数。

如何创建闭包

创建闭包的常见方法就是在函数内部创建另一个函数,内部的函数有权访问父级作用域的作用域变量。

function() {
  const a = null
  function() {
    console.log(a)
  }
}

闭包的作用

闭包的作用主要是用来设计私有变量的方法,模拟模块化,避免污染全局作用域,还有延长作用域链。

模拟块级作用域

(funtion() {
  // 闭包内的变量不会污染外部的作用域

}())

模拟私有属性

function Person() {
  const type = '黄种人'

  // 特权方法
  getType() {
    return type
  }
}

内存泄露的问题

由于闭包使用了其他函数作用域的变量,会造成更多的内存占用,使用不当会容易造成内存泄露。通常一个函数的作用域和作用域内部的所有变量会在函数执行结束后被销毁,但当函数返回一个闭包时,这个函数的作用域就会一直保存到闭包不存在为止。