转布尔
使用
Boolean
函数将类型转换成布尔类型除了👇的情况,其他都转换成
true
1 | console.log(Boolean()) |
原始值转数字
使用
Number
函数转换为数字,如果无法转换则返回NaN
Number
参数类型 | 结果 |
---|---|
undefined | NaN |
null | +0 |
Bollean | true=>1 false=>0 |
Number | 原样返回 |
String | 将字符串转化成一个整数或浮点数 无法解析的转成NaN |
1 | console.log(Number("123")); //123 |
parseInt
和parseFloat
parseInt 只解析整数,parseFloat 则可以解析整数和浮点数,如果字符串前缀是 “0x” 或者”0X”,parseInt 将其解释为十六进制数,parseInt 和 parseFloat 都会跳过任意数量的前导空格,尽可能解析更多数值字符,并忽略后面的内容。如果第一个非空格字符是非法的数字直接量,将最终返回 NaN
1 | console.log(parseInt("3 abc")) //3 |
原始值转字符串
转化为对应的字符串形式
原始值转对象
通过类型的构造函数转化成包装对象
1 | const num = 1; |
对象转布尔
所有对象(包括数组和函数)都转换为 true
对象转字符串
- 如果对象具有
toString
方法,则调用这个方法.如果返回一个原始值,JavaScript将这个值转化为字符串,并返回字符串结果 - 如果对象没有
toString
,或者这个方法返回的不是一个原始值,则调用valueOf
,如果是原始值将这个值转化为字符串,并返回字符串结果 - 前两种都无法获得一个原始值,则抛类型错误异常
String(obj)
对象转数字
- 先调用
valueOf
,返回一个原始值,则转化为数字返回 - 否则调用
toString
,返回一个原始值,转化为数字返回 - 都不满足,则跑类型错误异常
Number(obj)
一元操作符+
可以理解为将数据转化为number
1 | console.log(+true); //1 |
二元操作符+
- 任意一边存在字符串,则转化为字符串
- 不存在字符串,任意一边是数组,则转化为数字
- 任意一边不是数字,比如数组,或对象,则转化为数字
==
x==y
规范
- x,y同类型
- x是undefined,返回true
- x是null,返回true
- x是数字
- x或y是NaN,返回false
- +0,-0返回true
- x,y相等,返回true
- 其他返回false
- x是字符串,完全相等返回true
- x是布尔,xy都是true或false,返回true,其他false
- x,y指向同一个对象返回true,其他false
- null,undefined在宽松相等下是true
- 字符串和数字比较,优先转化为数字
- 布尔值优先转化为数字
- x,y一个是字符串或数字,一个是对象,将对象先
valueOf
,然后toString
比较