1. 程式人生 > 實用技巧 >閉包(closure)

閉包(closure)

  • 閉包的定義:當建立函式時,函式和外部狀態(變數)繫結就形成了閉包,所以每建立一個函式的同時會自動形成閉包。(這裡的外部環境其實就是變數的作用域,如何判斷作用域的範圍,一般看包裹這個變數的{},如果沒有{},那此變數就是全域性變量了)
let a = 20;
function outer() {
  let a = 10
  function inner() {
    return a
  }
  return inner()
}
// 打印出的是函式outer內的變數a而不是外部變數a
// 說明已經形成了閉包
console.log(outer())

我們知道建立函式以後都是自動形成閉包,也就是函式建立時就已經將函式外部的變數和函式內部的變數繫結在一起了,所以當你需要函式內部變數的值保持不變的時候就可以考慮在函式建立的同時,設定函式外部的變數,就如上面的例子,我希望inner函式內部的變數a不變永遠是10,我們就可以在inner函式外部設定變數a為10,這樣你呼叫inner函式,返回的永遠是10。

  • 閉包的應用:

應用閉包無非是建立一個函式,而閉包的作用無非是建立函式時,將函式和此時的外部變數繫結在一起,這樣不管我們什麼時候呼叫函式,引用的變數都是建立函式時的外部變數。

應用案例

(如有不同的見解,歡迎指出)