基本数据类型
JavaScript
的基本数据类型有:
- String—字符串类型
- Number—整形-----NaN也属于数值型
- Boolean—布尔类型
- null
- undefined—undefined类型(空类型)
- bigint—大整形
- symbol—Symbol类型
引用数据类型
JavaScript
的引用数据类型有:
-
function—函数类型
-
Array—数组类型
-
Object—对象类型
-
Set—Set数据类型
-
Map—Map数据类型
-
RegExp — 正则对象
-
WeakSet — 弱集合
-
WeakMap — 弱映射
基本数据类型和引用数据类型的区别
基本数据类型(原始值)
///存储在栈空间的数据段,其值直接存储在变量访问的位置,原始类型占据的空间是固定的,可将其存储在较小的栈中。这样便于迅速查寻变量的值
引用数据类型(引用值)
/// 存储在堆空间的引用对象,存储在变量处(栈)的值是一个指针,指向引用的堆空间的数据,引用值的大小会改变,所以不能把它放在栈中,否则会降低查找变量的速度。相反,放在变量的栈空间中的值是该对象存储在堆中的地址。地址的大小是固定的,所以把它存储在栈中对变量性能无任何负面影响
如
// 在内存中划分一个空间用于存储123,定义一个变量onum指向这个划分的内存空间(栈)
let onum = 123;
// 在栈空间新划分空间用于存储123,同时使nnum指针指向123这个地址(这个复制的是栈空间地址值,相当于拷贝了一份源文件)
nnum = onum;
// 更改nnum值,相当于更改新创建的栈空间对应地址值的值
nnum = 345;
// onum所指向的地址值的值并未改变
console.log(onum)//123
// 引用数据类型是保存在堆内存中的对象
let oarr = [123];
// 这里的复制并非是将值复制给了新的变量,而是将新变量的引用地址复制给了新变量,导致两个变量实际上指向了同一个值
narr = oarr;
// 当更改其中一个变量的数据的时候会导致两个变量的值都发生了改变
narr.push(789);
console.log(oarr,narr);//[ 123, 789 ],[ 123, 789 ]
// 注意:
// 基本数据类型是按值访问的,就是可以操作保存在变量中的实际的值.
// 基本数据类型没有属性和方法
// 基本数据类型的值是不可变的,任何方法都无法改变一个基本数据类型的值.