更新時間:2021-06-25 來源:黑馬程序員 瀏覽量:
當(dāng)在一個函數(shù)內(nèi)部聲明另一一個函數(shù)時,就會出現(xiàn)函數(shù)嵌套的效果。當(dāng)函數(shù)嵌套時,內(nèi)層函數(shù)只能在外層函數(shù)作用域內(nèi)執(zhí)行,在內(nèi)層函數(shù)執(zhí)行的過程中,若需要引人某個變量,首先會在當(dāng)前作用域中尋找,若未找到,則繼續(xù)向上一- 層級的作用域中尋找,直到全局作用域。我們稱這種鏈?zhǔn)降牟樵冴P(guān)系為作用域鏈。
下面我們通過代碼演示在函數(shù)嵌套中的作用域鏈效果。
var num = 10; function fn() { //外部函數(shù) var num = 20; function fun() { //內(nèi)部函數(shù) console.log (num) ; //輸出結(jié)果: 20 } fun() ; } fn() ;在上述代碼中,fun(函數(shù)內(nèi)訪問了num變量,由于在fun(函數(shù)內(nèi)部不存在num變量,所以向,上級作用域中查找。fun() 函數(shù)的上級作用域是fn0函數(shù),在該函數(shù)中找到了num變量,所以輸出結(jié)果為20。假如在fn)函數(shù)中也沒有num變量,則再往上查找,這時就到了全局作用域,此時num的值就是全局作用域下的10。