什麼是閉包?
所謂閉包,是指函數能夠通路函數外定義的變量。
例子一:
JavaScript中的閉包初探 var sMsg = "This is out of the function!";
JavaScript中的閉包初探
JavaScript中的閉包初探
JavaScript中的閉包初探 function printInfo()
JavaScript中的閉包初探 {
JavaScript中的閉包初探 alert(sMsg);
JavaScript中的閉包初探 }
JavaScript中的閉包初探
JavaScript中的閉包初探
JavaScript中的閉包初探 window.onload = function()
JavaScript中的閉包初探
JavaScript中的閉包初探 printInfo();
JavaScript中的閉包初探 上面的例子中,pringInfo函數通路了一個函數外的全局變量。
下面的例子更加複雜點,内部函數不但可以通路全局變量,也可以通路外部函數的參數。
例子二:
JavaScript中的閉包初探 var extraBonus = 3000;
JavaScript中的閉包初探
JavaScript中的閉包初探
JavaScript中的閉包初探 function calcSallery(baseSallery, bonus)
JavaScript中的閉包初探
JavaScript中的閉包初探
JavaScript中的閉包初探 function addSallery()
JavaScript中的閉包初探
JavaScript中的閉包初探 return baseSallery + bonus + extraBonus;
JavaScript中的閉包初探 }
JavaScript中的閉包初探
JavaScript中的閉包初探 return addSallery();
JavaScript中的閉包初探
JavaScript中的閉包初探
JavaScript中的閉包初探
JavaScript中的閉包初探
JavaScript中的閉包初探
JavaScript中的閉包初探 alert(calcSallery(5000,4000));
JavaScript中的閉包初探 }
結果:
12000