首頁(yè)技術(shù)文章正文

什么是作用域鏈?使用作用域鏈會(huì)出現(xiàn)什么效果?

更新時(shí)間:2021-06-25 來(lái)源:黑馬程序員 瀏覽量:

當(dāng)在一個(gè)函數(shù)內(nèi)部聲明另一一個(gè)函數(shù)時(shí),就會(huì)出現(xiàn)函數(shù)嵌套的效果。當(dāng)函數(shù)嵌套時(shí),內(nèi)層函數(shù)只能在外層函數(shù)作用域內(nèi)執(zhí)行,在內(nèi)層函數(shù)執(zhí)行的過(guò)程中,若需要引人某個(gè)變量,首先會(huì)在當(dāng)前作用域中尋找,若未找到,則繼續(xù)向上一- 層級(jí)的作用域中尋找,直到全局作用域。我們稱這種鏈?zhǔn)降牟樵冴P(guān)系為作用域鏈。

下面我們通過(guò)代碼演示在函數(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)訪問(wèn)了num變量,由于在fun(函數(shù)內(nèi)部不存在num變量,所以向,上級(jí)作用域中查找。fun() 函數(shù)的上級(jí)作用域是fn0函數(shù),在該函數(shù)中找到了num變量,所以輸出結(jié)果為20。假如在fn)函數(shù)中也沒(méi)有num變量,則再往上查找,這時(shí)就到了全局作用域,此時(shí)num的值就是全局作用域下的10。




   

猜你喜歡:

jsp作用域有哪些?jsp四大作用域是什么?    
Java函數(shù)式編程入門(mén)教程[java培訓(xùn)]

什么是函數(shù)式編程?[

虛函數(shù)的作用和實(shí)現(xiàn)原理介紹

黑馬程序員前端高級(jí)軟件工程師培訓(xùn)課程

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!