1. 程式人生 > >JavaScript - 匿名函數和閉包

JavaScript - 匿名函數和閉包

讀取 javascrip cnblogs () 避免 發的 立即執行 使用 內部

1. 塊級作用域

/*
這裏是全局環境
*/

//立即執行函數
(function () {
    //這裏是塊級作用域,外部無法讀取function內部的變量,除非將變量賦給window
    var a = ‘hello‘;
    var b = ‘world‘;
    alert(a);             //可以打印a
    window.b = b;    //將b賦給全局
})();

alert(a);     //無法打印a
alert(b);     //可以打印b

  我們一般在寫插件的時候,將代碼封裝在一個立即執行函數裏,一般只將一個對象賦給全局供外部使用,這樣就避免了插件內部變量汙染全局變量。

  在多人協作開發的項目中要盡可能少的使用全局變量和函數,否則很可能導致命名沖突。而將各自的代碼封裝在各自的作用域中,則互不幹擾。

//程序員A的代碼
(function () {
    $(function () {
        var a = ‘hello‘;
        alert(a);
    });
})();

//程序員B的代碼
(function () {
    $(function () {
        var a = ‘world‘;
        alert(a);
    });
})();

//都得以執行

  在全局作用域中使用塊級作用域可以減少閉包占用的內存問題,因為沒有指向匿名函數的引用。只要函數執行完畢,就可以立即銷毀其作用域鏈了。

JavaScript - 匿名函數和閉包