作者:Sean
持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天
前言:精通 JavaScript 数据类型以及数据类型的各种转换
前端必会面试题
JavaScript 数据类型
- 基本类型
- 字符串
- 数字
- 布尔值
- null
- undefined
- symbol
- bigInt
- Object
- Array
- Date
- Regx
类型判断
typeof
- 可以判断除 null 以外的所有基础类型
typeof null值为object- 除了函数
typeof 引用类型值为object typeof 函数值为function
instanceof
可以判断所有引用类型
- 无法解决 null 的判断问题
Object.prototype.toString.call()
可以判断所有数据类型,值为'[object 具体类型]'
隐式转换
- 转换成布尔值
- number 除了 0,-0,NaN 都为
true - string 除了空串都为
true - undefined, null 为
false - 引用类型
true
- number 除了 0,-0,NaN 都为
- 转换成数字
- 字符串
'number' => number其他情况NaN - 数组
[] => 0,[1] => 1,[1, 2] => NaN - null
0 - 除了数组的引用类型
NaN - Symbol 抛错
- 字符串
- 转换成字符串
- number
'number' - 布尔,函数,symbol
'true' - 数组
[1, 2] => '1, 2' - 对象
'[object Object]'
- number
四则运算
- 有字符串其他也转换成字符串
- 如果一方不是字符串或者数字,那么会将它转换为数字或者字符串
+'a' = NaN- 除了加法运算,其他运算只要有一方是数字,其他都会被转成数字
==比较
- 首先会判断是否为同类型
- 判断是否在对比
null和undefined,是则返回true - 判断两者是否为字符串和数字,是的话将字符串转换为
number - 判断一方是否为布尔值,是则将布尔值转换为
number - 判断一方是否为
object,另一方是否为string、number或者symbol,是则将object转换成原始类型
- 对象通过
toPrimitive转换对象 - 字符串通过
unicode字符串索引