簡單數據類型和復雜數據類型


1 簡單數據類型

簡單類型基本數據類型值類型):在存儲時變量中存儲的是值本身,因此叫做值類型,包括string ,number,boolean,undefined,null

//簡單數據類型null 返回的是一 個空的對象 object
var timer = null ;
console.log(typeof timer);
//如果有個變量我們以后打算存儲為對象,暫時沒想好放啥,這個時候就給null

 

2 復雜數據類型

復雜數據類型(引用類型):在存儲時變量中存儲的僅僅是地址(引用),因此叫做引用數據類型,通過 new 關鍵字創建的對象(系統對象、自定義對象),如 Object、Array、Date等;

3 堆棧

  • 堆棧空間分配區別:

  1、棧(操作系統):由操作系統自動分配釋放存放函數的參數值、局部變量的值等。其操作方式類似於數據結構中的棧;

簡單數據類型存放到棧里面,直接開辟一個空間,存放的是值

  2、堆(操作系統):存儲復雜類型(對象),一般由程序員分配釋放,若程序員不釋放,由垃圾回收機制回收。

復雜數據類型存放到堆里面 首先在棧里面存放十六進制的地址,然后這個地址指向堆里面的數據

  

 

 

注意:JavaScript中沒有堆棧的概念,通過堆棧的方式,可以讓大家更容易理解代碼的一些執行方式,便於將來學習其他語言

  • 簡單數據類型的存儲方式

    值類型變量的數據直接存放在變量(棧空間)中

  

 

 

  • 復雜數據類型的存儲方式

    引用類型變量(棧空間)里存放的是地址,真正的對象實例存放在堆空間中

4 簡單類型傳參

函數的形參也可以看做是一個變量,當我們把一個值類型變量作為參數傳給函數的形參時,其實是把變量在棧空間里的值復制了一份給形參,那么在方法內部對形參做任何修改,都不會影響到外部的變量。

function fn(a) {
   a++;
   console.log(a);
}
var x = 10;
fn(x);
console.log(x)

運行結果如下:

 

 

5 復雜數據類型傳參

函數的形參也可以看做是一個變量,當我們把引用類型變量傳給形參時,其實是把變量在棧空間里保存的堆地址復制給了形參,形參和實參其實保存的是同一個堆地址,所以操作的是同一個對象。

function Person(name) {
   this.name = name;
}
function f1(x) { // x = p
   console.log(x.name); // 2. 這個輸出什么 ?   劉德華
   x.name = "張學友";
   console.log(x.name); // 3. 這個輸出什么 ?   張學友
}
var p = new Person("劉德華");
console.log(p.name);    // 1. 這個輸出什么 ?   劉德華
f1(p);
console.log(p.name);    // 4. 這個輸出什么 ? 張學友

運行結果如下:

 


免責聲明!

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



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