1、显式转换
通过手动进行类型转换,Javascript提供了以下转型函数:
转换为数值类型:Number(mix)、parseInt(string,radix)、parseFloat(string)
转换为字符串类型:toString(radix)、String(mix)
转换为布尔类型:Boolean(mix)
2、隐身转换
用于检测是否为非数值的函数:isNaN(mix)
递增递减操作符(包括前置和后置)、一元正负符号操作符
加法运算操作符
连接操作符
乘除、减号运算符、取模运算符
逻辑操作符(!、&&、||)
关系操作符(<, >, <=, >=)
相等操作符(==)
3、转换规则
| 字符串 | 数字 | 布尔 | 数组 | 对象 | null | undefined |
字符串 | - | 如果字符串中只包含数字,则将其转换为十进制(忽略前导0) 如果字符串中包含有效的浮点格式,将其转换为浮点数值(忽略前导0) 如果是空字符串,将其转换为0 如果字符串中包含非以上格式,则将其转换为NaN | 非空会转换为true,空字符串会转换为false | 单个元素的数组 | 例子 Object("12") String {0: "1", 1: "2", length: 2, [[PrimitiveValue]]: "12"} | - | - |
数字 | 字面量 | - | 1和0 转换为false,true | 单个元素的数组 | 包装对象 | - | - |
布尔 | true,false 分别转 "true","false" | true,false 分别转为 1,0 | - | 布尔数组 | 包装对象 | - | - |
数组 | 使用,隔开的字符串 | 空数组为0 如果是一个元素是数字,undefined,null,就直接拿出来转换,undefined,null转换为0 否则转换为NaN | 恒等为true | - | 包装对象 | - | - |
对象 | 使用 toString() | 使用 valueof() | 恒等为true | 对象数组 | - | - | - |
null(空对象) | "null" | 0 | false | [null] | - | - | - |
undefined | "undefined" | 0 | false | [undefined]数组 | - | - | - |