JS進階之---基本數據類型,引用類型,內存空間


 

一、內存空間:

 

  為了便於理解,我們暫且先將Js的內存分為棧內存和堆內存。

 

  JavaScript具有垃圾自動回收機制,內存的分配與回收都完全實現了自動管理。所以我們在開發時一般會忽視內存空間的問題。但是理解了內存空間,將會對JS理解更加深刻,認識也更加清晰。

 

  JavaScript有自動垃圾收集機制,那么這個自動垃圾收集機制的原理是什么呢?其實很簡單,就是找出那些不再繼續使用的值,然后釋放其占用的內存。垃圾收集器會每隔固定的時間段就執行一次釋放操作。

  內存的生命周期:分配內存,使用內存,釋放內存

 

二、數據類型:

 

  5種基本數據類型:

 

    Number,Boolean,String,Undefined,Null

 

    基本類型是不可變的!任何方法都無法改變一個基本類型的值。

 var name = 'jozo';
 name.toUpperCase(); // 輸出 'JOZO'
 console.log(name); // 輸出  'jozo'

 

    也不可以給基本類型添加屬性或者方法。

var person = 'jozo';
person.age = 22;
person.method = function(){//...};
console.log(person.age); // undefined
console.log(person.method); // undefined

 

  基本數據類型存放於棧內存。包括變量標識符和變量的值。

var name = 'jozo';
var city = 'guangzhou';
var age = 22;

 

            

 

  引用數據類型:

    Object,Array

 

    可以為引用類型添加屬性和方法,也可以刪除其屬性和方法(delete person.name)。

 

    引用類型的存儲需要內存的棧區和堆區共同完成,棧區內存保存變量標識符和指向堆內存中該對象的指針,也可以說是該對象在堆內存的地址,而堆內存中存儲這個對象。

 

 var person1 = {name:'jozo'};
 var person2 = {name:'xiaom'};
 var person3 = {name:'xiaoq'};

 

               

 

三、數據比較: 

  1、對於基本類型,==和===是有區別的
    1)不同類型(如Number和String)間比較,==之間比較,先轉化成同一類型,看“值”是否相等,===如果類型不同,其結果就是不等
    2)同類型比較,直接進行“值”比較

  2、對於引用類型,==和===是沒有區別的
    進行“指針地址”比較

  3、基本類型與引用類型比較,==和===是有區別的
    1)對於==,將高級轉化為基礎類型,進行“值”比較
    2)因為類型不同,===結果為false

 

 

四、賦值:

 

  基本類型賦值后兩個變量互不影響 

  var a = 10;

  var b = a;

       

 

  

  引用類型的賦值是地址的復制,所以兩個變量指向的還是同一個對象,對任何一個的操作都會相互的影響。 

  var a = {};

  var b = a; 

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM