在js中总共有三种自动类型转换
1.转boolean类型
| 原始值 | 结果 |
| number | 除了0,-0,NaN都是true |
| string | 除了空串都为true |
| undefined,null | false |
| 引用类型 | true |
2.转string类型
| 初始类型 | 结果 |
| number | ‘5‘->5 |
| Boolean,函数,symbol | true |
| 数组 | [1,2]->'1,2' |
| 对象 | [object object] |
3.转number类型
| 源类型 | 结果 |
| string | 纯数字字符串为数字,字符串为NaN |
| 数组 | 空数组为0,存在一个元素且为数字转数字。其他情况NaN |
| null | 0 |
| 除去数组的引用类型 | NaN |
| Symbol | 报错 |
对象转换为原始类型会调用内置的[[ToPrimitive]]函数
整个算法逻辑为:
- 如果已经是原始类型了,那就不需要转换了
- 调用
x.valueOf(),如果转换为基础类型,就返回转换的值 - 调用
x.toString(),如果转换为基础类型,就返回转换的值 - 如果都没有返回原始类型,就会报错
博客介绍了JS中有转boolean、string、number三种自动类型转换。对象转换为原始类型会调用内置的[[ToPrimitive]]函数,其算法逻辑是若已是原始类型则无需转换,依次调用相关操作,若未返回原始类型则报错。

被折叠的 条评论
为什么被折叠?



