我理解的閉包

什麼是閉包呢?

閉包是子函數引用父函數的變量或函數;
最經常使用的形式是匿名函數自執行(function(){}())。
如:有三個div,點擊div彈出相應的內容閉包

<div id="1">1</div>
<div id="2">2</div>
<div id="3">3</div>
for(var i =1;i<3;i++){
    var ele = document.getElementsById(i);
    (function(i){
    ele.onclick=function(){
        alert(i);
    }
    }(i));
}

其次在谷歌調試中,也能實時監測閉包變量或函數,以下圖顯示;closure就是閉包的意思
clipboard.png函數

閉包的好處

可封裝
減小全局變量污染,避免與第三方插件命名衝突
減小函數間傳遞的參數個數
如:spa

function calFactory(base){
        var base = 5;  //優先級比參數高
        return function(max){
            var total = 0;
            for (var i =1;i<=max; i++) {
                total+=i;
            }
            return total + base;
        }
    }
    var adder = calFactory(2);  //adder = function(max)
    alert(adder(3));
相關文章
相關標籤/搜索