1.1簡單數(shù)據(jù)類型與復(fù)雜數(shù)據(jù)類型
簡單類型又叫做基本數(shù)據(jù)類型或者值類型,復(fù)雜類型又叫做引用類型。
- 值類型:簡單數(shù)據(jù)類型/基本數(shù)據(jù)類型,再存儲時變量中存儲的是值本身,因此叫做值類型。string,number,boolean,undefined,null
- 引用類型:復(fù)雜數(shù)據(jù)類型,在存儲時變量中存儲的僅僅是地址(引用),因此叫做引用數(shù)據(jù)類型,通過new關(guān)鍵字創(chuàng)造對象(數(shù)據(jù)系統(tǒng)、自定義對象)。
Object、Array、Date等
1.2堆和棧
1、棧(操作系統(tǒng)):由操作系統(tǒng)自動分配釋放存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧;簡單數(shù)據(jù)類型放在棧里面。
2、堆(操作系統(tǒng)):存儲復(fù)雜類型(對象),一般由程序員分配釋放,若程序員不釋放,由垃圾回收機制回收。復(fù)雜數(shù)據(jù)類型放在堆里面。
1.3內(nèi)存分配
- 簡單數(shù)據(jù)類型 是存放在棧里面 里面直接開辟一個空間存放的是值
-
復(fù)雜數(shù)據(jù)類型 首先在棧里面存放地址 十六進(jìn)制表示 然后這個地址指向堆里面的數(shù)據(jù)
image.png
1.4復(fù)雜數(shù)據(jù)類型傳參

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

image.png
