天天看點

JavaScript進階程式設計-變量作用域和記憶體問題4.1.☆基本類型和引用類型的值4.2執行環境及作用域4.3垃圾收集

JavaScript進階程式設計-變量作用域和記憶體問題

  • 4.1.☆基本類型和引用類型的值
  • 4.2執行環境及作用域
    • 簡述
  • 4.3垃圾收集

4.1.☆基本類型和引用類型的值

變量包含兩種不同資料類型的值:
① 基本類型值
按值通路,可直接操作儲存在變量中的實際的值 。undefined null boolean number string
① 引用類型值
儲存在記憶體中的對象,不允許直接通路, 按引用通路
4.1.1動态的屬性
隻能給引用類型值動态添加屬性
var person=new object();
person.name='nicky';
           
4.1.2複制變量值

複制基本類型值,各自獨立

複制引用類型值,兩個變量引用同一個對象,是一個指針

4.1.3傳遞參數

通路變量的值和引用兩種方式。

但是,所有函數的參數都是按值傳遞。

注意:不要在函數内部重寫對象或者參數,因為局部對象在函數執行後會銷毀。函數都是局部變量

4.1.4檢測類型

基本資料類型:typeof

引用資料類型:

person instanceof array

所有引用類型的值都是object的執行個體,基本類型不是對象。

4.2執行環境及作用域

簡述

執行環境是JS最為重要的一個概念

全局執行環境:被認為是window對象(第七章),關了應用程式才能銷毀。

函數執行環境:每個函數都有自己的執行環境,執行函數即環境進棧

作用域按照自己的了解即可,下一層的可通路上一層的變量,反之不可。即局部域可通路全局變量,反之不可。

4.2.1:延長作用域鍊
try-catch語句中的catch塊: 建立一個新的變量對象,其中包含的是被抛出的錯誤對象的聲明。
4.2.2:沒有塊級作用域

for循環中建立的變量i不會結束銷毀

①聲明變量

如果初始化變量時沒用var聲明,會自動認為是全局變量。 在初始化變量之前,一定要先聲明。

②查詢辨別符

如果局部環境中存在與全局環境中的同名的辨別符,隻認完局部中的就停止查詢了

4.3垃圾收集

自動垃圾收集機制
開發人員不必關心記憶體配置設定和回收問題
辨別無用變量的政策

①标記清除:給所有變量加标記,環境中在用的變量的标記被去掉,删除剩下

②引用計數:存在循環引用,有bug,已不用

性能問題

JavaScript進階程式設計-變量作用域和記憶體問題4.1.☆基本類型和引用類型的值4.2執行環境及作用域4.3垃圾收集
管理記憶體
解除引用:一旦資料無用,将其值設定為null來釋放其引用。讓值脫離執行環境,以便垃圾收集器下次運作時自動回收

繼續閱讀