先說說在網上看到的一個閉包案例:閉包
var add = (function () {
var counter = 0;
return function () {return counter += 1;}
})();
function myFunction(){
document.getElementById("demo").innerHTML = add();
}函數
這個案例代碼綜合度較高,再加上閉包,簡直不要太懵逼!get
整理了下,將以上代碼等效於下列代碼:io
var add = (function () {
var counter = 0;
return function () {return counter += 1;}
});
var m=add(); //m===function () {return counter += 1;},m此時等同於函數
function myFunction(){
document.getElementById("demo").innerHTML = m(); //m()===return count+=1,m()值的是函數m的運行結果,即返回的counter值
}function
這麼轉換後,瞬間就看懂了!其實所謂的閉包就是函數中的函數~demo