首先說函數的定義:
view sourceprint?function Hanshu()
{
//函數體...
}
這樣我們就定義了一個名為Hanshu的函數,現在我們嘗試調用一下這個函數。其實很簡單,調用函數就是用函數的名稱加括弧,即:
Hanshu();
這樣我們就調用了這個函數。
我們用一個按鈕調用一下這個函數:將按鈕的點擊事件指向這個方法
<input type="button" value="click me" onclick="Hanshu()">
現在我在此方法中再寫一個方法
我們在這個方法中將body的點擊事件指向了一個新的方法,匿名方法。然後彈出click body
view sourceprint?function Hanshu()
{
document.body.onclick = function()
{
alert(click body);
};
}
現在我們嘗試調用一下
<input type="button" value="click me" onclick="Hanshu()">
但是這樣是不能實現每單擊body時,彈出click body
因為當body去訪問這個匿名方法時,找不到此方法
我們可以這麼測試一下
view sourceprint?function AddClick()
{
// 這樣不能實現把body的單擊事件指給新的方法, 因為body不能訪問在函數體裡的函數
/*
document.body.onclick = new function()
{
alert(click body);
};
*/
// 這樣可以實現
document.body.onclick = BtnAn;
// 如果把方法指向函數內的方法,則會出現錯誤:NeiHanshu未定義
// document.body.onclick = NeiHanshu;
}
function BtnAn()
{
alert(click body);
// function NeiHanshu()
// {
// alert(函數裡的函數被調用);
// }
// NeiHanshu();
}
所以結果是:我們只能調用在外部的函數,不能調用函數裡的函數,這也就是一個存取層級的問題