閉包是子函數引用父函數的變量或函數;
最經常使用的形式是匿名函數自執行(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就是閉包的意思
函數
可封裝
減小全局變量污染,避免與第三方插件命名衝突
減小函數間傳遞的參數個數
如: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));