类型转换
js 中的那些隐式转换和强制转换
数据类型
类型介绍
Number
Boolean
String
Undefined
Null
Object
Symbol(es6定义的)
typeof 返回值
number
boolean
string
object
undefined
object
function
symbol
强制转换
通过String(), Number(), Boolean()函数强制转换 1. parseInt() -> 转换到第一个不是数字为止,一个都没有返回 NAN
隐式转换
规则
转换成 String
字符串连接符
转换成 Number
自增/自减运算符(++|--)
算术运算符(+-*/)
关系运算符(>|<|>=|<=|==|!=)
转成 Boolean
常见的隐式转换
基本类型
注意字符串连接符与算数运算符的区别
字符串连接符: 只要+号两边存在字符串
算术运算符+: 两边都是数字
关系运算符会把其他数据类型转换成Number之后比较
两边都是字符串时,按照字符串对应的unicode编码转成数字比较
两边都是字符串,且字符串是多个字符时。从左往右依次比较
Object类型
先转成String,然后再转成Number
先用 valueOf() 方法获取其原始值,如果原始值不是Number类型,则用toString() 方法转成String
再将String转成Number运算
Array.prototype.toString.call([]) === ''
Object.prototype.toString.call({}) === '[object Object]'
Last updated