基本数据类型:Number 、String、Boolean、BigInt、Symbol、Null、Undefined。
引用数据类型:Object,如普通对象,数组,正则,日期,Math数学函数。
区别:
内存中存储方式不同:
- 基本数据类型:存在栈中,占据空间小,频繁使用。
- 引用数据类型:在堆内存中,占据空间大;在栈中存储指针,调用的时候会检索在栈中的地址,取得地址后从堆中获得实体。
ES6新增数据类型:Symbol、BigInt。
Symbol:特点就是没有重复的数据,可以作为object的key。具有唯一性。
Symbol用法:for无法获取到这个key,需要使用Object。getOwnPropertySymbols(obj)才能获得这个obj对象中key。
let key = Symbol('key');
let obj = { [key]: 'symbol'};
let keyArray = Object.getOwnPropertySymbols(obj); // 返回一个数组[Symbol('key')]
obj[keyArray[0]] // 'symbol'
BigInt:特点就是数据涵盖的范围大,能够解决超出普通数据类型范围报错的问题。
BigInt用法:
- 整数末尾直接+n:647326483767797n
- 调用BigInt()构造函数:BigInt("647326483767797")
注意:BigInt和Number之间不能进行混合操作