執行環境定義了變數或函式有權訪問的其他資料,決定了他們各自的行為。每個執行環境都有乙個與之關聯的變數物件,環境中定義的所有變數和函式都儲存在這個物件中。
每個函式都有自己的執行環境。當執行流進入乙個函式時,函式的環境會被推入乙個環境棧中。而在函式執行之後,棧將其環境彈出,把控制權返回給之前的執行環境。
當**在乙個環境中執行時,會建立變數物件的乙個作用域鏈。作用域鏈的用途是保證對執行環境有權訪問的所有變數和函式的有序訪問。作用域鏈的前端,始終都是當前執行的**所在環境的變數物件。如果這個環境是函式,則將其活動物件作為變數物件。活動物件在最開始時只包含乙個變數,即arguments物件(這個物件在全域性環境中是不存在的)。作用域鏈中的下乙個變數物件來自包含(外部)環境,而再下乙個變數物件則來自下乙個包含環境。這樣,一直延續到全域性執行環境;全域性執行環境的變數物件始終都是作用域鏈中的最後乙個物件。
js的執行環境及作用域
主要的是執行環境和作用域鏈。執行環境定義了變數或函式有權訪問的其他資料,每個函式都有乙個執行環境,每個執行環境都有乙個與之關聯的變數物件,環境中定義的所有變數和函式都儲存在這個變數物件中,但是我們編寫 不能訪問這個變數物件,解析器在處理資料時會在後台使用它。每乙個函式都有乙個執行環境,每乙個執行環境...
執行環境及作用域
1.變數 基本型別和引用型別的值 可以直接操作儲存在基本資料型別變數中的值 基本資料型別值在記憶體中佔據固定大小的空間,因此儲存在棧中 操作引用資料型別,實際上是操作物件的引用,而不是直接操作記憶體物件 因為js不允許直接訪問記憶體中的位置 引用資料型別的值實際上是放在記憶體中的物件。但是給物件新增...
作用域及執行環境
每乙個函式都有自己的執行環境。在乙個環境中執行時,會有乙個作用域鏈來保證執行環境對變數和函式有序的訪問。有序是指 保證每個環境在訪問時,先在自己的變數物件 環境 裡搜尋變數和函式,搜尋不到時,再一級一級的往上查詢變數和函式,直到查詢到了全域性變數物件 例如window 但是任何環境都不能向下級中搜尋...