一、String
string类型转换分为两种情况,一种是参数是原始数据类型,一种是参数是其他数据类型。
1、原始数据类型
- 字符串: 转化成对应的字符串
- 数字:转化成对应的数字
- 布尔类型:true转化成'true',false转化成'false'
- undefined: 'undefined'
- null: 'null'
2、对象
对于参数是对象的,会先调用toString方法,如果返回的是原始类型,则按照原始类型转化成相应的字符串;如果返回的是对象,则继续调用该对象的valueOf()方法,如果返回的是原始类型,则按照原始类型进行相应的转换,如果返回的是对象,则报错。
二、Number
number类型转化也是分为两种情况,一种是参数是原始类型,一种参数是其他数据类型。
1、原始数据类型
- 字符串:如果是数字字符串,则转换成相应的数字,如果是其他字符串或者包含其他字符,则NaN
- 空字符串:0
- 布尔类型:true是1,false是0
- null:0
- undefined:NaN
2、其他数据类型
如果是数组并且只包含一个元素并且该元素是数字,则转化成相应的数字;如果是对象或是其他数组结构,则先调用valueOf方法,如果返回的结果是原始数据类型,则按照相应的规则进行转化,如果是对象,则继续调用该对象的toString方法,返回的如果是原始类型,则按照原始类型对应的规则转化,如果是对象,则返回NaN。
三、Boolean
除了空字符串、+0和-0、null、undefined、NaN是false,其他的都是true。
(手记)