值类型与引用类型的存储特征

值类型和引用类型的值的存储特征,有图有真相 凡是定义变量就要开辟内存

        var  num;   //不开辟内存,声明
	var  num = 123;   //开辟内存
	var  num = [1,2,3];  //将数据存储在一个单位的内存中,该数组的地址给变量存起来

变量存的是数值本身就是值类型

值类型赋值特点:将变量内的数据全部拷贝一份,存储给新的变量。内存中有两个数据

var arr  = [
          {name:'张三',age:19},
          {name:'张三',age:19},
          {name:'张三',age:19}   
]

值类型赋值内存逻辑图

var o = [name:’张三’];
var obj = o;
引用类型赋值的存储特点,将变量中的引用地址拷贝一份,存给新的变量。内存中只有一份数据。
问题:利用obj修改name:属性会影响到o中的name。
解决方案:深拷贝。(将在下一篇博客中详细讲解,这里就不赘述)
var car = {name:'法拉利'};
var p = {name:'张三',age:19,car:car};
引用类型值的存储内存逻辑图

var o ={
    name:'张三',
    age:19,
    children:[
                {name:'李四'},
                {name:'王五'}
            ]
}

引用类型值的存储内存逻辑图

原文地址:https://www.cnblogs.com/laijun/p/7395954.html