文章出處

  概念:

    靜態作用域指的是一段代碼,在它執行之前就已經確定了它的作用域,簡單來說就是在執行之前就確定了它可以應用哪些地方的作用域(變量)。

    動態作用域在代碼執行的時候才確定它的作用域的,以及作用域鏈。

靜態作用域:

var a = 10;
function fn(){
    var b = 1;
    console.log(a+b);
}
fn(); //11

在創建函數fn的時候就已經確定了它可以作用那些變量,如果函數fn里面有變量a就直接作用函數fn里面的變量a,如果沒有就往上一級找,這就是靜態作用域。

 

動態作用域:

var a = 10;
function fn(a){
    var b = 1;
    console.log(a+b);
}
fn(1); //2

你肯定會疑問你上面不是說,函數fn在創建的時候就已經確定了它的作用域嗎?為什么現在又不是了?其實一開始它確實已經確定了它的作用域,但是又因為你在調用這個fn的時候寫了參數,這個函數fn的作用域又發生了改變,變成了動態的作用域,于是它作用了在函數體內的變量a。

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()