基本类型:
字符串(String)
数字(Number)
布尔(Boolean)
空(Null)
未定义(Undefined)
Symbol
**
**
引用类型:
对象(Object)
数组(Array)
函数(Function)
还有两个特殊的对象:正则(RegExp)和日期(Date)
数据类型区别:
**基本数据类型是直接储存在栈中的数据段,占据空间小,属于被频繁使用的数据
**
引用数据类型是储存在堆内存中的,占据空间大,他是在栈中存放了指针指向堆中数据的起始地址,需要使用时,会先找到栈中的指针,再找到ui应堆中的位置,获得数据
Symbol:
是ES6新出的数据类型,Symbol是定义一个独一无二的值,数据具有唯一性,所以 Symbol() != Symbol() ,同时使用Symbol数据作为key不能使用for获取到这个key,需要使用Object.getOwnPropertySymbols(obj)获得这个obj对象中key类型是Symbol的key值
let key = Symbol('key');
let obj = { [key]: 'symbol'};
let keyArray = Object.getOwnPropertySymbols(obj); // 返回一个数组[Symbol('key')]
obj[keyArray[0]] // 'symbol'
BigInt也是ES6新出的一种数据类型,这种数据类型的特点就是数据涵盖的范围大,能够解决超出普通数据类型范围报错的问题。