JavaScript系統學習小結——變量、做用域和內存問題

  趁着寫完小論文還未完全消散的學習氛圍,開始着重鞏固本身JavaScript的基礎知識,爲秋招作最基本的準備。算法

  1. 變量:Js的變量可能保存兩種不一樣數據類型的值:基本類型值和引用類型值。
    • 基本類型包括:Undefined,Null,Boolean,Number和String,基本類型是按值訪問方式;
    • 引用類型的值是對象,是按引用方式引用;
    • 在複製變量值時,兩種數據類型的差別表如今:
      • 複製基本類型值後,建立的是這個值的副本,彼此兩個變量能夠參與任何操做而不會互相影響;
      • 複製引用類型值後,兩個變量實際上將引用同一個對象;
    • 在做爲參數傳遞時,兩種數據類型值的傳遞分別如同他們各自的賦值規律;儘可能把參數想象成局部變量,有助於理解「參數只能按值傳遞」的概念;
    • typeof操做符能夠用來檢測是哪種基本數據類型;instanceof操做符能夠用來檢測是哪種引用數據類型;
  2. 做用域(執行環境),做用域決定變量的生命週期:
    • 執行環境有全局執行環境和函數執行環境之分(不一樣其餘語言,這裏沒有語句塊的做用域);
    • 使用var聲明的變量會自動被添加到最接近的環境中,沒有使用var聲明,該變量會自動被添加到全局環境中;所以初始變量以前,必定要聲明;
    • 垃圾收集機制的原理是:找出再也不繼續使用的變量,而後釋放其佔用的內存。
      • 瀏覽器的具體實現一般有兩個策略:標記清除、引用計數;
      • 「標記清除」是目前主流的收集算法;在IE中訪問非原生JS對象(BOM,DOM元素)時,會使用到「引用計數」算法,但會致使一些問題(當代碼中存在循環引用現象時);
  3. 內存
    • 優化內存的最佳方式,就是爲執行中的代碼只保留必要的數據。
      • 一旦數據再也不有用,最好經過將其設置爲null來釋放其引用(即「解除引用」方法);這一方法適用於大多數全局變量和全局對象的屬性;
      • 解除引用的真正做用是讓值脫離執行環境,以便垃圾收集器下次運行時將其回收。

      書本類容範圍:《JavaScript高級程序設計》P68-82瀏覽器

相關文章
相關標籤/搜索