幾類常見的作用域

常見的作用域可以分爲幾個類型:全局作用域,函數作用域,塊狀作用域和動態作用域。

對象 類型
global/window 全局作用域
function 函數作用域
{} 塊狀作用域
this 動態作用域

如果一個變量或者其他表達式不在“當前作用域”,那麼JavaScript機制會繼續沿着作用域鏈上查找直到全局作用域(global或者瀏覽器中的window)如果找不到將不可被使用。作用域也可以根據代碼層次分層,以便子作用域可以訪問父作用域,通常是指沿着鏈式的作用域鏈查找,而不能從作用域引用子作用域中的變量和引用

  • 全局作用域

變量在函數或者代碼塊{}外定義即爲全局作用域。不過,在函數或者代碼塊{}內未定義的變量也擁有全局作用域的(不推薦)

  • 函數作用域

在函數內部定義的變量,就是局部作用域。函數作用域內,對外是封閉的,從外層的作用域無法直接訪問函數內部的作用域!

  • 塊級作用域

在其他編程語言中,塊狀作用域是很熟悉的概念,但是在JavaScript中不被支持,就像上述只是一樣,除了全局作用域就是函數作用域,一直沒有自己的塊級作用域。在ES6中已經改變了這個現象,塊狀作用域得到普及。關於什麼是塊,只要認識{}就可以了。

  • 動態作用域

在Javascript中很多人對this的指向時而清楚時而模糊,其實結合作用域會對this有一個清晰的理解。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章