閉包意思

在計算機科學中,特別是程式語言中,閉包(Closure)是一個函式及其相關的引用環境的組合。這個引用環境包含了函式在創建時所在的詞法環境中的所有變數。簡單來說,閉包允許函式記住其創建環境中的值,即使這些值在函式定義之後才被創建或修改。

閉包通常在以下兩種情況下非常有用:

  1. 回調函式:當需要編寫一個函式,該函式在稍後的時間被調用時,閉包可以用來記住創建時的環境。
  2. 模組和對象:閉包可以用來創建模組或者私有變數,因為閉包可以訪問其創建環境中的私有變數。

在支持閉包的語言中,如 JavaScript、Python 和 Ruby,閉包通常與匿名函式或者高階函式一起使用。下面是一個 JavaScript 中的閉包示例:

function createCounter() {
  let count = 0;

  return function increment() {
    return count++;
  };
}

let counter = createCounter();
console.log(counter()); // 輸出 0
console.log(counter()); // 輸出 1
console.log(counter()); // 輸出 2

在這個例子中,createCounter 函式創建了一個閉包,它記住了一個私有變數 count。每次調用 counter 函式時,它都會訪問這個私有變數並增加它的值。即使 createCounter 函式已經執行完畢,counter 函式仍然可以訪問和修改 count 變數。