標籤:類型 catch 檢測 一個 null 環境 調整 瀏覽器 記憶體管理
第四章 變數範圍與記憶體
基本類型 5種
Undefined Null Boolean Number String
兩種變數類型 基本類型與參考型別
注意:String 再其他語言中是參考型別,再javascri中為基本類型
即:這五種基本類型是按值訪問的
參考型別是按照引用訪問的
動態屬性
對於一個參考型別,一個引用變數被賦值後,可以為其添加屬性,也可以刪除與修改其屬性
var o = new object();
o.name = "qi"; //可以為引用變數添加屬性
變數的複製
基本類型的複製:兩個變數做複製時,兩個變數是相互獨立的記憶體空間
參考型別的複製:兩個變數實際上指向同一塊堆記憶體位址
參數的傳遞是 按值傳遞(這個值包括基本類型,以及分配在棧中引用的值,即傳遞對象時,實參與形參引用同一個對象)
typeof 操作符 基本類型檢測
instanceof 可以檢測該引用屬於什麼類型的對象
全域變數 局部變數 範圍鏈(使用try-catch和with會在範圍鏈的前端臨時加長)
與類C語言不同的是:沒有塊級範圍
注意:在 if和for 中定義的變數,也會添加到當前執行環境
(在類C語言中,if for聲明的變數,在判斷/迴圈體結束後會自動釋放,而javascript則會保留)
聲明:
var生命的變數會自動加入最近的執行環境;沒有使用var聲明的則自動加入全域環境變數
垃圾收集:
(1)標記清除(主流;在標記中去掉進入執行環境的變數,然後在將被標記的變數清除)
(2)引用技術
效能問題:
在ie中,變數或者對象的個數,數組長度以及字串長度可以在動態調整觸發瀏覽器執行記憶體回收的動作(使用臨界值來觸發)
也可以顯示的調用(不建議)
記憶體管理:
因為瀏覽器分配的記憶體較少(相對於傳統型程式),因此為了擷取更好的效能,一旦資料不再使用,最好將其置空,接觸引用
解除引用的目的在於讓變數脫離執行環境,便於被下一輪GC標記清除
javascript變數範圍與記憶體