執行環境及作用域

2021-09-02 18:55:30 字數 1050 閱讀 3482

1. 變數:

基本型別和引用型別的值:

可以直接操作儲存在基本資料型別變數中的值-----基本資料型別值在記憶體中佔據固定大小的空間,因此儲存在棧中

操作引用資料型別,實際上是操作物件的引用,而不是直接操作記憶體物件(因為js不允許直接訪問記憶體中的位置),引用資料型別的值實際上是放在記憶體中的物件。-----但是給物件新增屬性,是操作的記憶體中的物件,複製儲存物件的某個變數時,操作的是引用。-----引用資料型別的值是物件,儲存在堆中

複製變數的值:

引用資料型別的值複製時,複製的是引用

2. 檢測物件是哪種型別的物件:variable  instanceof  constructor

3. 執行環境----每個執行環境都有乙個與之關聯的變數物件,該環境中定義的所有變數和函式都儲存在這個變數物件中

① 全域性執行環境:最外圍的乙個執行環境,被認為是window物件,所有的全域性變數和函式都做為window物件的屬性和方法被建立。當某個執行環境中的所有**都執行完畢後(應用程式退出或者網頁關閉或瀏覽器關閉等),該環境就會被銷毀,隨之變數和函式也被銷毀。

② 函式的執行環境:每個函式都有自己的執行環境,當執行流進入乙個函式時,函式的環境就會被推入乙個環境棧中,而在函式執行完畢後,棧將其環境彈出。

4. 作用域鏈:當**在乙個環境中執行時,會建立變數物件的乙個作用域鏈。其作用是,保證對執行環境有權訪問的所有變數和函式有序訪問。

作用域鏈的前端,始終是當前執行**所在環境的變數物件,如果這個環境是函式,則將其活動物件作為變數物件。活動物件最開始只包含乙個變數,即arguments物件,作用域鏈中的下乙個變數物件來自包含(外部)環境,再下乙個來自下乙個包含環境。。。。。一直持續到全域性執行環境(始終是作用域鏈中的最後乙個物件)

5. 識別符號(變數、函式、屬性、函式引數的名字)解析是沿著作用域鏈一級一級的搜尋識別符號的過程。從識別符號的前端逐級向後溯。

如:var color = "blue";

function changecolor() else  

作用域及執行環境

每乙個函式都有自己的執行環境。在乙個環境中執行時,會有乙個作用域鏈來保證執行環境對變數和函式有序的訪問。有序是指 保證每個環境在訪問時,先在自己的變數物件 環境 裡搜尋變數和函式,搜尋不到時,再一級一級的往上查詢變數和函式,直到查詢到了全域性變數物件 例如window 但是任何環境都不能向下級中搜尋...

JavaScript執行環境及作用域

執行環境也稱環境,定義了變數或函式有權訪問的其他資料,決定了他們各自的行為。每乙個執行環境中都有乙個與之相關聯的變數物件,環境中定義的所有變數和函式都儲存在這個物件中。執行流機制 每乙個函式都有自己的執行環境,當執行流進入乙個函式時,函式環境就會被推入乙個環境棧中,而在函式執行之後,棧將其執行環境彈...

js 執行環境及作用域

執行環境定義了變數或函式有權訪問的其他資料,決定了他們各自的行為。每個執行環境都有乙個與之關聯的變數物件,環境中定義的所有變數和函式都儲存在這個物件中。每個函式都有自己的執行環境。當執行流進入乙個函式時,函式的環境會被推入乙個環境棧中。而在函式執行之後,棧將其環境彈出,把控制權返回給之前的執行環境。...