一個 function 在執行完後,其內的變數都會消亡,這個就稱之為語彙環境

1
2
3
4
5
6
7
8
function sayHi() {
var name = 'Stranger'
function displayName() {
console.log('Hi~' + name)
}
displayName()
}
sayHi()

閉包

而 closure 使我們可以調用其內的變數

1
2
3
4
5
6
7
8
9
10
11
function adder(x) {
function add(y) {
return x + y
}
return add
}
const add2 = adder(2)
const add10 = adder(10)

console.log(add2(3)) //5
console.log(add10(3)) //13

add2add10 都已經呼叫完 adder 了,
這時候我們創造了兩個環境,
分別是 x = 2add2x = 10add10
所以可以做出不同的加法工具。

最簡單的閉包大多有一個特性
一個 function 被另一個 function 包住,並 return。