一、内存空间
JS中每个数据都需要内存空间来存储,内存空间分对堆内存(stock)和栈内存(head)
- JS中的基本数据类型有固定的值大小保存在栈内存中
- JS中的引用数据类型大小值不固定,一般保存在堆内存中,JS不允许我们直接访问堆内存的位置,当我们访问引用数据类型的时候,实际是访问栈内存中保存的堆内存的引用地址
demo1:
var a = 12;
var b = true;
var c = 'abcd';
var d = {a:1}
demo2:
var a = 12;
var b = true;
var c = 'abcd';
var d = {a:1}
var e = c;
var f = d;
![](https://i-blog.csdnimg.cn/blog_migrate/14e371e3e3af3e180b6fd1dcb08746d7.png)
当var e = c; 复制基础数据类型时候会为新的变量赋值一个新值,虽然var e = c; 都是'abcd',但是e和c是两个相互不影响的新值
当var e = d; 复制引用数据类型的时候统一为了新的变量赋予新值,不同的是这个新值只是引用类型的地址指针,尽管相互独立。但是在堆内存中访问的数据仍然是同一个