原始类型
- Number: 表示双精度64位二进制格式浮点数,可以表示整数和浮点数,可以·精确表示从
-2^53 + 1到2^53 - 1之间的所有整数 - String: 表示字符序列
- Boolean: 表示布尔类型,有true和false两个值,用于逻辑判断
- Undefined:表示变量未初始化,let a; a声明但是未初始化,默认值为undefined
- Null: 表示一个空值或者不存在的对象,一般引用类型变量声明后会初始化为null。表示未指向具体对象。
- Symbol:,防止对象属性名冲突
- BigInt: 用于表示任意大小的整数,不受
2^53 - 1的限制,
引用类型
Object:包括普通对象,数组(Array),函数(Function)
区别
存储区别
- 原始类型存储在栈(stack)中,
值直接保存在变量访问的位置,由于其大小固定且频繁使用,存储在栈中具有更高的性能 - 引用类型存储在对(heap)中,
占用空间较大且大小不固定,变量保存的是对实际对象的引用(即指针),这些引用保存栈中
赋值方式区别
- 原始类型
复制的是值本身,例如将一个String类型变量赋值给另一个变量,两个变量各自独立 - 引用类型
复制的是引用(指针),将一个对象的变量赋值给另一个变量,一个变量中属性的修改会影响其他变量