类型转换
类型转换
JS 没有严格的数据类型,所以可以互相转换
- 显示类型转换:
Number()
,String()
,Boolean()
- 隐式类型转换:四则运算,判断语句,
Native
调用,JSON
方法
显示转换
1. Number()
简单数据类型
- 数字:转换后还是原来的值
- 字符串:如果能被解析成数字,就得到数字,否则就是
NaN
,空字符串为0 - 布尔值:
true
转为1,false 转为0 undefined
: 转为NaN
null
:转为0 引用类型转换
1 |
|
复杂数据类型
先调用对象自身的 valueOf
方法,如果该方法返回原始类型的值(数值、字符串和布尔值),则直接对该值使用 Number
方法,不再继续
如果 valueOf
方法返回复合类型的值,再调用对象自身的 toString
方法,如果 toString
方法返回原始类型的值,则对该值使用 Number
方法,不再继续
如果 toString
方法返回的还是复合类型的值,则报错
1 |
|
2. String()
简单数据类型
- 数字:转换成相应字符串
- 字符串:转换后还是原来的值
- 布尔值:
true
转为”true”,false
转为”false” undefined
: 转为”undefined”null
:转为”null” 引用类型转换
1 |
|
复杂数据类型
先调用 toString
方法,如果 toString
方法返回的是原始类型的值,则对该值使用 String
方法,不再继续
如果 toString
方法返回的是复合类型的值,再调用 valueOf
方法,如果 valueOf
方法返回的是原始类型的值,则对该值使用 String
方法,不再继续
如果 valueOf
方法返回的是复合类型的值,则报错
1 |
|
3. Boolean()
简单数据类型
- 0
- -0
- “”
- null
- undefined
- NaN
以上统一转为false,其他一律为true
1 |
|
复杂数据类型
都转为 true
1 |
|
隐式转换
1 |
|
几道隐式转换题
1 |
|
参考
本文大部分内容来自于这篇文章 https://juejin.cn/post/6995591618371780622
类型转换
http://example.com/2022/07/15/类型转换/