Javascript闭包速记巧记

45 阅读1分钟

闭包(Closure)

闭包是JavaScript中的一个重要概念,它允许函数记住并访问其词法作用域,即使函数在其词法作用域之外执行。简单来说,闭包就是一个函数能够访问并操作其外部词法环境(lexical environment)的变量。

function outerFunction(outerVariable) { 
   return function innerFunction(innerVariable) { 
       console.log('outerVariable:', outerVariable); 
       console.log('innerVariable:', innerVariable); 
     }; 
   } 
       const myFunction = outerFunction('Hello'); 
       myFunction('World'); // 输出: outerVariable: Hello, innerVariable: World

在上面的示例中,outerFunction 是一个外部函数,它有一个参数 outerVariable 和一个内部函数 innerFunctioninnerFunction 可以访问 outerVariable,即使它在 outerFunction 的作用域之外被调用。这是因为 innerFunction 形成了一个闭包,它包含了 outerFunction 的词法环境。

闭包的应用

  1. 数据封装和私有变量:通过使用闭包,可以创建私有变量,只能通过特定的公共方法进行访问和修改。
  2. 回调函数和高阶函数:闭包是JavaScript中实现回调函数和高阶函数的基础。
  3. 模块模式:闭包也常用于实现模块模式,这是一种组织和封装代码的方法,有助于避免全局作用域的污染。

注意事项

虽然闭包在JavaScript编程中非常有用,但它们也有一些潜在的缺点。由于闭包会保留其外部函数的变量,因此如果创建了大量的闭包,可能会导致内存消耗过多。此外,过度使用闭包也可能使代码难以理解和维护。因此,在使用闭包时,需要权衡其优点和缺点。