首先熟知的js数据类型分为:基本数据类型和引用数据类型
基本数据类型:是操作的值(String Number Boolean Null Undefined)
引用数据类型:是操作的地址(Object)
接下来通过一道前端面试来分析下:
var a = [1];var b = 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
从零学前端,点点滴滴做起!每天积累一个知识点,让自己的理论更加丰富起来!如果你喜欢记得关注