1. 程式人生 > >什麽是作用域

什麽是作用域

傳遞 如果 方便 語言 基本 目標 需要 發生 console

幾乎所有編程語言最基本的功能之一,就是能夠儲存變量中的值,並且能在之後對這個值進行訪問或修改。事實上,正是這種儲存和訪問變量的值的能力將狀態帶給了程序。

這些變量在哪裏?程序需要時如何找到它們?

這些問題說明需要一套設計良好的規則來存儲變量,並且之後可以方便地找到這些變量,這套規則被稱為作用域。

對於var a = 2;的處理:

變量的賦值操作會執行兩個動作,首先編譯器會在當前作用域中聲明一個變量(如果之前沒有聲明過),然後在運行時引擎會在作用域中查找該變量,如果能夠找到就會對它賦值。

引擎在查找變量時執行怎樣的查找,會影響最終的查找結果。

當變量出現在賦值操作的左側時進行LHS查詢,出現在右側時進行RHS查詢。

console.log(a);對a的引用是一個RHS引用,這裏a並沒有賦予任何值。相應地,需要查找並取得a的值,這樣才能將值傳遞給console.log(..)。

a = 2;對a的引用是LHS引用,因為實際上我們並不關心當前的值是什麽,只是 為=2這個賦值操作找到一個目標。

作用域是根據名稱找變量的一套規則。

當一個塊或函數嵌套在另一塊或函數中時,就發生了作用域的嵌套。在當前作用域中無法找到某個變量時,引擎就會在外層嵌套的作用域中繼續查找,直到找到該變量,或抵達最外層的作用域為止。

什麽是作用域