首先熟知的js数据类型分为:基本数据类型和引用数据类型
基本数据类型:是操作的值(StringNumberBooleanNullUndefined)
引用数据类型:是操作的地址(Object)
接下来通过一道前端面试来分析下:
vara=[1];varb=a;a.push(2);b=[3];b.push(4);console.log(a);console.log(b);
不看答案的你能做对吗?a->[1,2]b->[3,4]
来分析下为什么会是这样的答案呢?
1)因为数组属于对象类型,所以操作的是地址(堆内存)
2)一开始地址里面存放来1;
3)把这个地址(地盘)告诉了a,a又告诉了b;
4)a往地址(地盘)里面push了2,因为a和b知道的地址(地盘)是一个,所以他们都知道这里面有1,2
5)b又自己指向了另一个地址(地盘)里面有3,然后往新地址(地盘)里放个4,所以b知道的这个地址是3,4
6)那么b这个地盘不是之前a指向的地址(地盘)了;所以,a知道的是1,2
7)b知道的是自己的这个地盘3,4