说说js中的类型转换机制
# 是什么
js数据类型
- 基础: string number boolean undefind null symbol
- 引用: object (array, object) ,function
# 怎么用
- 显示转换:主动告诉你
- 隐式转换:计算或比较时,程序自动转换
# 显示转换
- Number()
- String()
- Boolean()
- parseInt() 碰到非数字就停下,第一个非数字则问NaN
parseInt('122fang') //122
# 隐式转换
- 比较运算: if、 while、 === 、!==、 > 、 <
- 算术运算: + - * / %
# 自动转换成字符串
规则: 先valueOf获取原始值, 再转换成字符串
- 特例
- []转换成''
'6' + 1 // 61
'6' - 1 // 5
'6' + true // 6true
'6' + [] // 6
'6' + {} // 6{object Object}
'6' + foo // '6function foo(){}'
'6' + null // 6null
'6' + undefined // 6undefined
# 自动转换成布尔值
规则:转换区分:以下为false,其他为true
- +-0
- undefined
- null
- NaN
- ''
- false
# 自动转换成数值
规则:除了+可能转成字符串,其他均转换成数值, 先转成valueOf获取原始值,再转数值
- 特例
- null 转换成0
- undefined转成NaN
- 非数字字符串转NaN
'5' - '2' // 3
'5' * '2' // 10
true - 1 // 0
false - 1 // -1
'1' - 1 // 0
'5' * [] // 0
false / '5' // 0
'abc' - 1 // NaN
null + 1 // 1
undefined + 1 // NaN
上次更新: 2021/12/19, 18:05:42