数据类型
(1)七种基本类型
string、number、boolean、undefined、null、Symbol、bigInt
判断类型 typeof 例:
const str = "string"
const nul = null
console.log(typeof str) //string
console.log(typeof null) //若判断null则为object
关于 Symbol:symbol值都是唯一的,一个symbol值能作为对象属性的标识符
const sym1 = Symbol('xxx')
const sym2 = Symbol('xxx') //sym2也是新创建的
console.log(sym1 === sym2) //false
// 从缓存池中取出原有的值
const sym3 = Symbol.for('xxx')
const sym4 = Symbol.for('xxx')//此时从全局保存中获取
console.log(sym1 === sym2) //true
Symbol 应用场景:
① 类似于 UUID() 实现不重复的key属性的操作;
② 避免被重复的算法所覆盖对象的key,场景可以参考计算id;
③ Object.getOwnPropertySymbols可以迭代对象上的该属性;
④解决全局的变量冲突问题。
BigInt 是一种数字类型的数据,它可以表示任意精度格式的整数, 使用 BigInt 可以安全地存储和操作大整数,即使这个数已经超出了 Number 能够表示的安全整数范围。
(2)引用数据类型
object(Data、Function、Array)
判断类型 instanceof 例:
const arr = new Array()
console.log(arr instanceof Array) // true
栈和堆
栈:存放基本数据类型 (先进先出)
堆:存放引用数据类型 (优先队列)
关于区别:
原始数据类型直接存放在栈中的简单数据段,占据空间小、大小固定,属于被频繁使用的数据;
引用数据类型是存放在堆中的对象,占据空间大,大小不固定,它是在栈中存储了指针,该指针指向堆中该实体的起始地址。获得栈中的地址后,从堆中获得实体。