概念:
基本類型值 是指變量在內(nèi)存中存儲時(shí)保存的是變量的值,操作的也是存儲的值
引用類型值 是指變量在內(nèi)存中存儲時(shí)自身保存的是指向?qū)嶋H存儲值位置的索引地址,操作的是地址
分類:
基本類型值:
Number
Boolean
String
null
undefined
引用類型值:
對象(數(shù)組、對象、函數(shù)...)
代碼示例:
基本類型值:
var a = 10; // 在內(nèi)存中開辟一個(gè)空間,里面存儲10,a存儲的就是這個(gè)值
var b = a; // 在內(nèi)存中重新開辟一個(gè)空間,里面存儲b的值是10
// 將b的值賦值為0,只是單純修改b的值,a的值沒有任何變化
b = 0;
// 輸出變量的值
console.log(a); // 10
console.log(b); // 0
引用類型值:
// 聲明變量objA,自身存儲了指向值存儲位置的地址
var objA = {
name: '孫悟空',
age: 2000
};
// 賦值操作,將objA的地址賦值給objB
var objB = objA;
// 修改
objB.name = '齊天大圣';
// objA和objB都是存儲了執(zhí)行值位置的地址,所以修改其中任意一個(gè),另外一個(gè)也會跟著變化
console.log(objA.name); // 齊天大圣
console.log(objB.name); // 齊天大圣
函數(shù)傳值:
基本類型值變量:
傳入的是變量的值,和變量本身沒有關(guān)系
// 定義變量
var a = 20;
// 定義函數(shù)
function setA (a) {
// 賦值
a = 10;
}
// 調(diào)用函數(shù),實(shí)際上變量a的值傳入了函數(shù)內(nèi)部
setA(a);
console.log(a); // 20
引用類型值變量:
傳入函數(shù)的是變量的引用地址,函數(shù)內(nèi)部如果操作改變了該變量,會影響該變量
// 定義變量
var obj = {
name: '孫悟空',
age: 2000
}
// 定義函數(shù)
function setObj (obj) {
obj.name = '齊天大圣';
}
// 調(diào)用函數(shù)
setObj(obj);
// 打印變量
console.log(obj.name); // 齊天大圣