JS的作用域

作用域是一套規則,用於確定在何處以及如何查找變量(標識符)。如果查找的目的是對變量進行賦值,則進行LHS查詢,如果目的是獲取變量的值,則進行RHS查詢。賦值操作符會導致LHS查詢。=操作符或調用函數時傳入參數的操作都會導致關聯作用域的賦值操作。JS引擎首先會在代碼執行前對其進行編譯,在這個過程中,像var a=2這樣的聲明會被分解成兩個獨立的步驟。

1.首先,var a在其作用域中聲明新變量,這會在最開始的階段,也就是代碼執行前進行。

2.接着,a=2會查詢(LHS查詢)變量a並對其進行賦值。

LHS和RHS查詢都會在當前作用域中開始,逐級向上查詢,直到全局作用域(頂層),無論找不找得到都會停止。


不成功的RHS引用會導致ReferenceError異常。不成功的LHS引用會導致自動隱式地創建一個全局變量(非嚴格模式)

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