H5前端技术分享程序员

基本类型值和引用类型值的区别

2017-11-11  本文已影响91人  胡哥有话说

概念:

基本类型值 是指变量在内存中存储时保存的是变量的值,操作的也是存储的值

引用类型值 是指变量在内存中存储时自身保存的是指向实际存储值位置的索引地址,操作的是地址

分类:

基本类型值:

Number
Boolean
String
null
undefined

引用类型值:

对象(数组、对象、函数...)

代码示例:

基本类型值:

var a = 10;        // 在内存中开辟一个空间,里面存储10,a存储的就是这个值
var b = a;         // 在内存中重新开辟一个空间,里面存储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都是存储了执行值位置的地址,所以修改其中任意一个,另外一个也会跟着变化
console.log(objA.name);    // 齐天大圣
console.log(objB.name);    // 齐天大圣

函数传值:

基本类型值变量:

传入的是变量的值,和变量本身没有关系

// 定义变量
var a = 20;

// 定义函数
function setA (a) {
    // 赋值
    a = 10;
}

// 调用函数,实际上变量a的值传入了函数内部
setA(a);
console.log(a);    // 20

引用类型值变量:

传入函数的是变量的引用地址,函数内部如果操作改变了该变量,会影响该变量

// 定义变量
var obj = {
    name: '孙悟空',
    age: 2000
}

// 定义函数
function setObj (obj) {
    obj.name = '齐天大圣';
}

// 调用函数
setObj(obj);

// 打印变量
console.log(obj.name);    // 齐天大圣
上一篇下一篇

猜你喜欢

热点阅读