更多详细请参考:JavaScript数据类型总结及面试题
JS中的数据类型
- 基本数据类型(值类型、原始类型)
- number
- NaN
- Infinity
- string
- boolean
- null
- undefined
- symbol
- static Symbol
- Symbol.prototype
- bigint
- 引用数据类型
- object
- 普通对象
- 数组对象
- 正则对象
- 数学函数对象
- 日期对象
- JSON对象
- Set
- Map
- …
- function
- 普通函数
- 箭头函数
- 构造函数
- 生成器函数
- 匿名函数
- 自调用函数
- …
数据类型检测
- typeof 检测数据类型的逻辑运算符
- instanceof 检测是否为类的实例
- constructor 检测构造函数
- Object.prototype.toString.call 检测数据类型
typeof [value] 返回当前值的数据类型,返回的数据类型是字符串
- 返回的结果都是字符串
- 局限性:
- typeof null => “object” 类型
- typeof 不能细分对象类型(检测普通对象或数组对象等都是返回"object")
- 原理:
- 所有的数据类型值在计算机中都是按照“二进制”进行存储
- null的二进制值是“000000”
- 只要是对象都是以“000”开始的
- typeof检测时是按照计算机存储的二进制值来检测的,所以检测null时也是返回“object”
Symbol的应用
- 给对象设置一个唯一的属性
- 在vuex/redux中做行为派发的时候,统一管理派发行为的标识,标识的值可以是唯一值
- 【重点】Symbol.hasInstance
- 【重点】Symbol.toPrimitive
- 【重点】Symbol.toStringTag
- 【重点】Symbol.interator
- 【重点】Symbol.isConcatSpredable
- 【重点】Symbol.match
bigint 超大数字
- Number.MAX_SAFE_INTEGER(Math.pow(2, 53))
- Number.MIN_SAFE_INTEGER
- 超过最大安全数再进行计算得到的结果就不正确了,所以就需要用bigint
- 在数字后面加个n就是bigint类型
更多详细请参考:JavaScript数据类型总结及面试题