基本数据类型
String、Number、Boolean、Null、Undefined、Symbol、BigInt
引用数据类型
Object
注意:Object是个大类,function函数、array数组、date日期…等都归属于Object
基本数据类型和引用数据类型的区别?
声明变量时存储的位置不同
- 原始数据类型直接存储在栈(stack)中的简单数据段,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储;
- 引用数据类型存储在堆(heap)中的对象,占据空间大、大小不固定。如果存储在栈中,将会影响程序运行的性能;引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。
在复制变量时结果也不一样
- 基本数据类型复制后2个变量是独立的,因为是把值拷贝了一份
- 引用数据类型则是复制了一个指针,2个变量指向的值是该指针所指向的内容,一旦一方修改,另一方也会受到影响
var x = 3; var y = x; console.log(x,y); //3 3 // 基本数据类型复制后2个变量是独立的 x = 5; //修改一方,另一个不受影响 console.log(x,y); //5 3 var a = [0,1,2,3]; var b = a; console.log(a, b); //(4) [0, 1, 2, 3] (4) [0, 1, 2, 3] a[0] = 9 console.log(a, b); //(4) [9, 1, 2, 3] (4) [9, 1, 2, 3]