《javaScript高級程式設計》第四章 讀書筆記 4.1 基本類型 和 引用類型 的值 1. 基本類型值 包括:Undefined、Null、Boolean、Number 和 String。 引用類型值 指那些可能由多個值構成的對象。【註意:字元串不是引用類型的】 2. 基本類型 在記憶體中占據固
《javaScript高級程式設計》第四章 讀書筆記 4.1 基本類型 和 引用類型 的值 1. 基本類型值 包括:Undefined、Null、Boolean、Number 和 String。 引用類型值 指那些可能由多個值構成的對象。【註意:字元串不是引用類型的】 2. 基本類型 在記憶體中占據固定大小的空間,因此被保存在棧記憶體中。 引用類型 的值是對象,保存在堆記憶體中。 【對象的訪問地址在棧記憶體中存放,但該對象的值由堆記憶體來分配空間】 【由於對象的值的大小不固定,因此不能把它們保存到棧記憶體中。但記憶體地址大小是固定的,因此尅講記憶體地址大小保存在棧記憶體中。】 3. 從一個變數到另一個變數複製 引用類型 的值,複製的其實是指針,因此兩個變數最終都指向同一個對象。 4. 確定一個值是哪種基本類型可以用 typeof 操作符,而確定一個值是哪種引用類型可以使用 instanceof 操作符。 5. ECMAScript中所有函數的參數都是按值傳遞的。
相關文章:JavaScript變數——棧記憶體or堆記憶體(http://www.tuicool.com/articles/m2queq)
4.2 執行環境 及 作用域 1. 執行環境 有 全局執行環境(全局環境) 和 函數執行環境 之分。 2. 每次進入一個新執行環境,都會創建一個用於搜索變數和函數的作用域鏈。 3. 變數的執行環境有助於確定應該何時釋放記憶體。 4. 在嚴格模式下,初始化未經聲明的變數會導致錯誤。 5. 執行環境決定了變數的生命周期。
4.3 垃圾收集 1. JavaScript是一門具有自動垃圾收集機制的編程語言,開發人員不必關心記憶體分配和回收問題。 2. 離開作用域的值將被自動標記為可以回收,因此將在垃圾收集期間被刪除。 3. “標記清除”是目前主流的垃圾收集演算法,這種演算法的思想是 給當前不使用的值加上標記,然後再回收其記憶體。 4. 另一種是“引用計數”。當代碼中存在迴圈引用現象時,“引用計數”演算法就會導致問題。