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

 

1、內存空間:spa

 

  爲了便於理解,咱們暫且先將Js的內存分爲棧內存和堆內存。3d

 

  JavaScript具備垃圾自動回收機制,內存的分配與回收都徹底實現了自動管理。因此咱們在開發時通常會忽視內存空間的問題。可是理解了內存空間,將會對JS理解更加深入,認識也更加清晰。指針

 

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

  內存的生命週期:分配內存,使用內存,釋放內存對象

 

2、數據類型:blog

 

  5種基本數據類型:生命週期

 

    Number,Boolean,String,Undefined,Nullip

 

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

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

 

    也不能夠給基本類型添加屬性或者方法。ci

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'};

 

               

 

3、數據比較: 

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

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

  三、基本類型與引用類型比較,==和===是有區別的
    1)對於==,將高級轉化爲基礎類型,進行「值」比較
    2)由於類型不一樣,===結果爲false

 

 

4、賦值:

 

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

  var a = 10;

  var b = a;

       

 

  

  引用類型的賦值是地址的複製,因此兩個變量指向的仍是同一個對象,對任何一個的操做都會相互的影響。 

  var a = {};

  var b = a; 

   

相關文章
相關標籤/搜索