筆記:JavaScript閉包

  • 閉包

閉包是一種保護私有變量的機制,在函數執行時造成私有的做用域,保護裏面的私有變量不受外界干擾。直觀的說就是造成一個不銷燬的棧環境。
對於閉包,當外部函數返回以後,內部函數依然能夠訪問外部函數的變量。閉包

function f1()
{
    var N = 0; // N是f1函數的局部變量
    function f2() // f2是f1函數的內部函數,是閉包
    {
        N += 1; // 內部函數f2中使用了外部函數f1中的變量N
        console.log(N);
    }
    return f2;
}
var result = f1();
result(); // 輸出1
result(); // 輸出2
result(); // 輸出3
  • 閉包是內部函數以及其做用域鏈組成的一個總體。使用閉包能夠定義真正的私有變量:
function User() {
    var name;
    this.setName = function(value) {
        name = value;
    };
    this.getName = function() {
        return name;
    };
}
var u = new User();
u.setName("Rohmeng");
console.log(u.name); // 輸出undefined
console.log(u.getName()); // 輸出Rohmeng

對象u的name屬性爲私有屬性,使用u.name不能直接訪問函數

相關文章
相關標籤/搜索