1、JavaScript高級之函數作用域鏈

作用域鏈

JavaScript的每個函數function都有自己的作用域,使用Active Object(簡稱AO)活動對象來保存,在相互嵌套的函數中形成了作用域鏈,如圖:


作用域鏈就是從裏到外的AO鏈

變量的尋找:

函數fn3中使用的變量,如在fn3作用域內尋找不到,則往外層fn2作用域尋找,以此類推,直到全局對象window


代碼演示:


var c = 5;
function t1(){
    var d = 6;
    function t2(){
        var e = 7;
        var d = 3;//如果在這裏聲明的var d = 3,那麼函數就不在向外尋找變量d,輸出的值爲15
        console.log(c+d+e);
    }

    t2();
}
t1();

瞭解了JavaScript作用域鏈後,在函數裏面使用頻率較高的外部變量,最好先將外部變量保存爲局部變量後,再進行操作,這樣就大大減少通過作用域鏈查找變量的時間。



發佈了23 篇原創文章 · 獲贊 3 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章