js高程複習--變量,作用域,內存

  • 5種基本數據類型
    • Undefined, Null, Boolean, Number, String,
    • 按值訪問變量(引用類型按引用訪問),不同副本
  • 所有函數均是按值傳遞參數,
    • 針對基本類型的傳遞不做舉例,參數即一個新的副本
    • 針對引用類型,以下是因爲傳遞的值是針對於對象的引用,所以在函數內部的修改在外部也可以體現,而對按值傳參最好的解釋就是加上註釋的代碼後,輸出不變。因爲這時obj是一個新對象的引用,在內部的修改在外部無法體現
    function seNmae(obj){
    	obj.name = "a";
    	//obj = new Object();
    	//obj.name = b;
    }
    
    var person = new Object();
    setName(person);
    console.log(person.name);   //"a"
    
  • typeof檢測基本數據類型,instanceof判斷對象是誰的實例
  • 執行環境
    • 全局執行環境(window對象)
    • 由執行環境構成作用域鏈,作用域鏈只能向後查找
    • 延長作用域鏈(函數和try-catch, with)
    • js沒有塊級作用域!!
  • 變量聲明
    • 使用var聲明的變量會自動添加到最接近的環境中。沒有使用聲明的變量會自動添加到全局環境(嚴格模式下會報錯)
  • 垃圾收集
    • 自動垃圾收集機制,無需手動跟蹤內存的使用情況,機制是找出不被引用的變量,釋放他們的內存
      • 標記清除
        當變量進入環境,標記爲進入環境,離開環境,標記爲離開環境。垃圾收集器在運行的時候會給存儲在內存種的變量加上標記,然後會去掉環境中的變量以及被環境中的變量引用的變量的標記,而再此之後被加上標記的變量將被視爲準備刪除的變量。
      • 引用計數
        跟蹤記錄每個值被引用的次數,當聲明一個變量並且將一個引用類型值賦給該變量時,則這個值的引用次數就是1,如果同一個值又被賦給另一個變量,則該值的引用次數加1,如果包含這個值引用的變量又取得另外一個值,則這個值的引用次數減一,爲0即回收
      • 循環引用
      • 手動解除引用讓頁面獲取更好的性能(方便垃圾收集器下一次自動回收)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章