1. 程式人生 > >js的基本數據類型和復雜數據類型區別

js的基本數據類型和復雜數據類型區別

屬性 AR ons fun 復雜數據類型 地址 不同 nbsp 參數調用

1.區別
基本數據類型把數據名和值直接存儲在棧當中
復雜數據類型在棧中存儲數據名和一個堆的地址,在堆中存儲屬性及值,訪問時先從棧中獲取地址,再到堆中拿出相應的值
2 不同數據類型作為參數時 函數內部對參數的修改是否改變外部變量的值

基本數據類型作為參數時,函數內部對參數值的修改不會改變外部變量的值

function a(s){//定義以s為參數的函數,返回s的值
s=100;
return s;
}
var y=2;
a(y);//y作為參數調用函數a
console.log(y);//y還是為2

結果還是1因為把y的值給s時是簡單的復制了一份,y和s可以單獨操作不相互影響

復雜數據類型作為參數時,函數內部對參數值的修改會改變外部變量的值

因為復雜數據類型賦值是把棧中對象的地址賦給變量,函數內外兩個變量指向同一個對象,所以只要對象的屬性值改變,兩個變量值都會改變

function student(age,name,grade){
this.age=age;
this.name=name;
this.score=grade;
}

var s1=new student(18,"wjq",2);//創建一個student對象

function a(s){

s.name="xxx";

}
a(s1)//把s1賦給s
console.log(s1.name);//輸出xxx

所以要弄懂js中簡單數據類型和復雜數據類型的區別,關鍵還要搞懂兩個在內存中的存儲過程。

js的基本數據類型和復雜數據類型區別