JavaScript第四章

來源:互聯網
上載者:User

標籤:boolean   訪問   obj   錯誤   border   代碼執行   cell   問題   代碼   

變數、範圍和記憶體問題

  1. 基本類型和參考型別的值

(1)基本類型:按值訪問(Undefined、Null、Boolean、Number、String)

(2)參考型別:按引用訪問

 

基本類型

參考型別

動態屬性

不能給基本類型的值添加屬性

動態添加、改變、刪除屬性和方法

複製變數值

在變數對象上建立一個新值,然後將該值複製到新變數分配的位置上(互不影響)

複製結束兩個變數引用一個對象(互相關聯)

傳遞參數

把函數外部的值複製給函數內部的參數

把這個值的記憶體位址複製給另一個局部變數

檢測類型

使用typeof 檢測基本類型,如果是null或對象,會返回“object”====返回的是string類型

使用instanceof 檢測具體的類型:對象、數組或者正則等。文法:result = variable instanceof constructor。

 

  1. 執行環境及範圍

執行環境定義了變數或函數有權訪問其他資料,決定了它們各自的行為;都有一個與之關聯的變數對象,環境中定義的所有變數和函數都儲存在這個對象中。

所有全域變數和函數都是作為window對象的屬性和方法建立的。某個執行環境中的所有代碼執行完畢後,該環境被銷毀,儲存在其中的所有變數和函數定義也隨之銷毀。

代碼在一個環境中執行時,會建立變數對象的範圍鏈,保證對執行環境有權訪問的所有變數和函數的有序訪問。

內部環境可以通過範圍鏈訪問所有的外部環境,但外部環境不能訪問內部環境中的任何變數和函數。環境之間的聯絡是線性有次序的,只可以向上搜尋範圍鏈,以查詢變數和函數名;下級的範圍鏈中包含的對象:自己的變數對象和上級的變數對象,直到全域變數對象。

標識符解析是沿著範圍鏈一級一級地搜尋標識符的過程。搜尋過程從更範圍鏈的前端開始,然後逐級地向後回溯,知道找到標識符位置,若找不到,會導致錯誤。

延長範圍鏈

執行環境的類型:全域和局部;
延長範圍鏈:有些語句可以在範圍鏈的前端臨時增加一個變數對象,該變數對象會在代碼執行後被移除。在下列兩種語句會加長範圍鏈:

  • try-catch語句的catch塊(建立一個新的變數對象,包含拋出的錯誤對象聲明)
  • with語句(將指定對象添加到範圍鏈中)

沒有塊級範圍

變數是被添加到當前的執行環境中的,
使用var聲明的變數會被自動添加到最近的環境中,在函數內部,最近的是函數的局部環境;with語句中,最接近的是函數環境,沒有使用var初始化的,會自動添加到全域環境(不建議這樣使用,strict 模式下,初始化未經聲明的變數會導致錯誤)。

查詢標識符

標識符(變數名):查詢時,先在局部環境中尋找,沒找到則繼續向上搜尋,一直到全域環境的變數對象,若還沒找到,則是該變數尚未聲明。若找到,則停止搜尋,不在進入下一個變數對象。(局部環境有,則不使用父級的標識符)

  1. 垃圾收集

JavaScript具有自動垃圾收集機制。

標記清除(最常用的垃圾收集方式)

可以用任何方式來標記變數

引用計數

追蹤記錄每一個值被引用的次數。代碼存在循環參考現象時,不適用。

JavaScript第四章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.