1.深拷贝和浅拷贝的差异是什么?

2.各种数据类型在内存的如何读取?

话不多少我们上代码,我们带着问题去看知识点

jsp数据内存js快速入门图解数据类型和内存的关系 JavaScript

var num = 1; var num2 = num; num = 6; var obj = { name: '12' }; var obj2 = obj; obj.name = 'chen'; console.log(num); // 6 console.log(num2); // 1 console.log(obj); //{name: "chen"} console.log(obj2); // {name: "chen"}

对付刚打仗js的同学来说,可能还有这样的疑问 num 和 num2 不应该都是 6吗,我改了obj这个变量的属性值,怎么obj2 也改变了? 这些如果纯挚看这些代码是很难阐明的,由于这些字面上是不知道这些代码实行背后真正在做什么?

我们看下解析和实行代码过程中,内存的变革

var num = 1;

var num2 = num;

num = 6;

var obj = { name: '12' };

var obj2 = obj;

obj.name = 'chen';

此时内存终极的存储的数据

总结:

基本数据类型赋值的是详细值,引用类型赋值的是指向堆内存的地址浅拷贝复制的是栈内存的值,复制引用类型的是地址深拷贝复制的是栈内存的值,访问引用类型的是地址详细复制每个属性值,并在栈内存中开辟新的空间存放指针