閉包的定義:
詞法作用域 (lexical environment)
函數(shù)在執(zhí)行的過程中,先從自己內(nèi)部找變量
如果找不到嚷狞,再?gòu)?b>創(chuàng)建當(dāng)前函數(shù)所在的作用域(詞法作用域)去找, 以此往上
注意找的是變量的當(dāng)前的狀態(tài)
函數(shù)連同它作用域鏈上的要找的這個(gè)變量肢预,共同構(gòu)成閉包
一般情況下使用閉包主要是為了
1臀防、封裝數(shù)據(jù)
2涛救、暫存數(shù)據(jù)
比如:
function car(){
? var speed = 0
? function fn(){
? ? speed++
? ? console.log(speed)
? }
? return fn
}
var speedUp = car()
speedUp()? //1
speedUp()? //2