function f1(){
n = 999;
function f2(){
alert(n);
}
return f2;
}
var result = f1();
result(); // 999
上面代碼中的f2函數,就是閉包。
各種專業文獻上的“閉包”(closure)定義非常抽象,很難看懂。其實,閉包就是能夠讀取其他函數內部變量的函數。
由于在Javascript語言中,只有函數內部的子函數才能讀取局部變量,因此可以把閉包簡單理解成“定義在一個函數內部的函數”。
所以,在本質上,閉包就是將函數內部和函數外部連接起來的一座橋梁。
閉包用途:一是可以讀取函數內部的變量,另一個就是讓這些變量的值始終保持在內存中。