教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Js中什么是作用域鏈?如何理解作用域鏈?

更新時間:2021年10月08日16時13分 來源:傳智教育 瀏覽次數(shù):

好口碑IT培訓

當在一個函數(shù)內(nèi)部聲明另一個函數(shù)時, 就會出現(xiàn)函數(shù)嵌套的效果。當函數(shù)嵌套時,內(nèi)層函數(shù)只能在外層函數(shù)作用域內(nèi)執(zhí)行,在內(nèi)層函數(shù)執(zhí)行的過程中,若需要引人某個變量,首先會在當前作用域中尋找,若未找到,則繼續(xù)向上一層級 的作用域中尋找,直到全局作用域。我們稱這種鏈式的查詢關系為作用域鏈。

下面我們通過代碼演示在函數(shù)嵌套中的作用域鏈效果。

var num= 10;
function fn() {
    //外部函數(shù)
    var num = 20;
    function fun() {
        //內(nèi)部函數(shù)
        console.log (num);
        //輸出結果: 20
    }
    fun() ;
}
fn();

在上述代碼中,fun()函數(shù)內(nèi)訪問了num變量,由于在fun()函數(shù)內(nèi)部不存在num變量,所以向上級作用域中查找。fun() 函數(shù)的上級作用域是fun()函數(shù),在該函數(shù)中找到了num 變量,所以輸出結果為20。假如在fun()函數(shù)中也沒有num變量,則再往上查找,這時就到了全局作用域,此時num的值就是全局作用域下的10。


0 分享到:
和我們在線交談!