目录
JS数据类型
基本数据类型:
引用数据类型:
两种数据存储方式:
两种数据类型的区别:
数据类型的检测方式
null和undefined区别
JS数据类型
基本数据类型:
Number,String,Boolean,null,undefined,symbol,bigint(后两个为ES6新增)
Symbol 和 Biglnt 是ES6 中新增的数据类型
- Symbol 代表创建后独一无二且不可变的数据类型,它主要是为了解决可能出现的全局变量冲突的问题
- Biglnt 是一种数字类型的数据,它可以表示任意精度格式的整数,使用 Biglnt 可以安全地存储和操作大整数,即使这个数已经超出了 Number 能够表示的安全整数范围
引用数据类型:
object,function(proto Function.prototype)
object:普通对象,数组对象,正则对象,日期对象,Math数学函数对象。
两种数据存储方式:
- 基本数据类型是直接存储在栈中的简单数据段,占据空间小、大小固定,属于被频繁使用的数据。栈 是存储基本类型值和执行代码的空间。
- 引用数据类型是存储在堆内存中,占据空间大、大小不固定。引用数据类型在栈中存储了指针,该指 针指向堆中该实体的起始地址,当解释器寻找引用值时,会检索其在栈中的地址,取得地址后从堆中获 得实体。
两种数据类型的区别:
- 堆比栈空间大,栈比堆运行速度快。
- 堆内存是无序存储,可以根据引用直接获取。
- 基础数据类型比较稳定,而且相对来说占用的内存小。
- 引用数据类型大小是动态的,而且是无限的。
数据类型的检测方式
typeof
数组/对象/null都会被判断为object,其它都正确
instanceof
只能正确判断引用数据类型,不能判断基本数据类型。
null和undefined区别
- Undefined 和 Null 都是基本数据类型,这两个基本数据类型分别都只有一个值,就是 undefined 和 null。
- undefined 代表的含义是未定义,null 代表的含义是空对象。一般变量声明了但还没有定义的时候会返回 undefined,null主要用于赋值给一些可能会返回对象的变量,作为初始化。
- 当对这两种类型使用 typeof 进行判断时,Null 类型化会返回 “object”
- 当使用双等号对两种类型的值进行比较时会返回 true,使用三个等号时会返回 false。