js之詞法作用域與動態作用域


事實上JavaScript並不具有動態作用域,它只有詞法作用域,簡單明了,但是this機制某種程度上很像動態作用域

詞法作用域:是一套引擎如何尋找變量以及會在何處找到變量的規則,它是定義在詞法階段的作用域,是由寫代碼時將變量和塊作用域寫在哪里來決定的。
動態作用域:動態作用域並不關心函數和作用域是如何聲明以及在何處聲明的,只關心它們從何處調用。類似this的指向問題

例子

function foo(){
  console.log(a);
}
function bar(){
  var a=3;
  foo();//2
}
var a=2;
bar();

foo是在全局作用域中定義的,無論在何處調用它的作用域都不會發生變化,都是全局作用域(根據詞法作用域來看)。所以會找響應的全局中的變量a,若沒找到就會輸出undefined。

參考書籍:
《你不知道的js》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM