首先熟知的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

js基本数据类型有哪些(javascript基本数据类型和引用数据类型)(1)