function f1(){
n = 999;
function f2(){
alert(n);
}
return f2;
}
var result = f1();
result(); // 999
上面代碼中的f2函數(shù)慷嗜,就是閉包穷缤。
各種專業(yè)文獻(xiàn)上的“閉包”(closure)定義非常抽象,很難看懂三椿。其實缺菌,閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。
由于在Javascript語言中搜锰,只有函數(shù)內(nèi)部的子函數(shù)才能讀取局部變量伴郁,因此可以把閉包簡單理解成“定義在一個函數(shù)內(nèi)部的函數(shù)”。
所以蛋叼,在本質(zhì)上蛾绎,閉包就是將函數(shù)內(nèi)部和函數(shù)外部連接起來的一座橋梁。
閉包用途:一是可以讀取函數(shù)內(nèi)部的變量鸦列,另一個就是讓這些變量的值始終保持在內(nèi)存中租冠。