本篇會談到
純值可以是 String
Number
Boolean
null
undefined
Symbol
let a = 33;
// 將上述其中一種純值設定到變數 = 定義 a 是 33
// 此時 變數 a 知道了這個純值的記憶體位址。
創造一個新的變數,會有一個新的記憶體位置, b = a
就會拷貝 a 純值,放到新建立的 b 記憶體位址上
let a = 33;
let b = a;
// 傳值把 a 記憶體,複製一份到 b 記憶體
console.log(b);
// 33
b = 30;
console.log(a, b);
// 33 30
// 各自的記憶體位置 不會互相影響
物件
、陣列
、函式
,都是物件傳參考特性,並不會直接寫值,會建立一個記憶體空間
只修改屬性值的話 就可以用 const 宣告的物件
const a ={
name: '小明',
obj: {},
}
b = a
,變數 b 此時不會得到一個新的記憶體位址,而是會改變指向到變數 a 的記憶體位址,並不會創造新的拷貝物件。
const a ={
name: '小明',
obj: {},
}
// 設定一個變數 a ,物件類型
const b = a;
// 將變數 b ,指向到 變數 a 的記憶體空間
// 此時,a b 物件指向相同地方
console.log(a === b);
// true
b.name = '阿花';
// 現在 a, b 都在相同記憶體位置,所以改變記憶體空間的內容,會整個一起改變
console.log(b);
// {name: "阿花", obj: {…}}
console.lgo(a);
// {name: "阿花", obj: {…}}
提醒 again: 物件
、陣列
、函式
,都是物件傳參考特性,並不會直接寫值,會建立一個記憶體空間
JS