前端开发

深入理解 JavaScript 闭包

闭包(Closure)是 JavaScript 中最强大也是最难理解的特性之一。简单来说,闭包允许函数访问并操作函数外部的变量。在本文中,我们将深入探讨闭包的机制。

什么是闭包?

MDN 对闭包的定义是:闭包是函数和声明该函数的词法环境的组合。换句话说,闭包让你可以从内部函数访问外部函数的作用域。

function init() {
  var name = "Mozilla"; // name 是一个被 init 创建的局部变量
  function displayName() { // displayName() 是内部函数,一个闭包
    alert(name); // 使用了父函数中声明的变量
  }
  displayName();
}
init();

实际应用场景

闭包在实际开发中有很多应用场景,比如:

注意事项

虽然闭包很强大,但如果使用不当,可能会导致内存泄漏。因为闭包会持有外部作用域的引用,导致这些变量无法被垃圾回收机制回收。因此,在不需要使用闭包时,应及时断开引用。

← 返回首页