天天看點

JavaScript中的閉包初探

什麼是閉包?

 所謂閉包,是指函數能夠通路函數外定義的變量。

例子一:

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

繼續閱讀