数据类型
1: 原始类型 Boolean Null Undefined Number String Symbol
2: 对象
显示类型转换
- Number 函数
1:数值: 转换后还是原来的值
2:字符串:如果可以被解析为数值,则转换为对应的数值, 否则转为NaN 空字符串为0
3:布尔值:true转为1 false 转为0
4:undefined: 转为NaN
5:null: 转为0
6:对象
1. 先调用对象自身的valueOf方法 如果该方法返回原始类型的值 则直接对该值使用Number方法 ,不在进行后续步骤
2. 如果valueOf返回的是复合类型的值 在调用对象自身的toString方法, 如果toString方法返回的是原始类型的值, 则对该值进行Number 方法 不在进行后续步骤
3. 如果toString 返回的是复合类型的值 则进行报错
- String 函数
1:数值: 转为对应的字符串
2: 字符串: 转换后还是原来的值
3:布尔值: true 转为'true' false 转为 'false'
4: undefined: 转为'undefined'
5: null: 转为'null'
6: 对象
1: 先调用对象自身的toString 方法 如果该方法返回原始类型的值, 则直接对该值使用String 方法 不在进行后续步骤
2: 如果toString 返回的是复合类型的值 在调用对象自身valueOf方法, 如果valueOf方法返回的是原始类型的值,则对该值进行String 方法 不在进行后续步骤
3: 如果valueOf 返回的类型是复合类型的值 则进行报错
- Boolean 函数
1:undefined null +0 -0 NaN 空字符串 都是false
2:其余的都是true
隐式类型转换
- 四则运算
- 判断语句
- native调用
1:console.log 转为字符串类型
2:alert 字符串类型
- 常见题目
1:[]+[]
2:[]+{}
3:{}+[]
4:{}+{}
5:true+true
6:1+{a:1}
typeof
1: Undefined > 'undefined'
2: Null > 'object'
3: Boolean > 'boolean'
4: Number > 'number'
5: String > 'string'
6: Symbol > 'symbol'
7: Host object > implementation-dependent
8: Function object > 'function'
9: any other object > 'object'