文章出處
文章列表
概念:
靜態作用域指的是一段代碼,在它執行之前就已經確定了它的作用域,簡單來說就是在執行之前就確定了它可以應用哪些地方的作用域(變量)。
動態作用域在代碼執行的時候才確定它的作用域的,以及作用域鏈。
靜態作用域:
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。
文章列表
全站熱搜