再議javascript閉包

javascript中閉包已經成了一個很神祕,讓人高山仰止的存在。javascript

今天又對閉包進行了一番搜索,有了一種明悟:閉包就至關於黑盒的鑰匙。當你手握閉包,黑盒就能爲你所用。java

爲何這麼說呢?這個想法來自於這篇文章閉包

function foo(x) {
    var tmp = 3;
    
    return function (y) {
        alert(x + y + tmp);
        x.memb = x.memb ? x.memb + 1 : 1;
        alert(x.memb);
    }
}
var age = new Number(2);
var bar = foo(age); // bar 如今是一個引用了age的閉包
bar(10);
若是一個函數訪問了它的外部變量,那麼它就是一個閉包。
  注意,外部函數不是必需的。經過訪問外部變量,一個閉包能夠維持(keep alive)這些變量。在內部函數和外部函數的例子中,外部函數能夠建立局部變量,而且最終退出;可是,若是任何一個或多個內部函數在它退出後卻沒有退出,那麼內部函數就維持了外部函數的局部數據。

閉包常常用於建立含有隱藏數據的函數(但並不老是這樣)。函數

相關文章
相關標籤/搜索