一、Number( temp ) -> 把temp转化为数字
1. temp为数字时: 把temp原样输出
2. temp为字符串: "123.11" -> 123.11(number), "123AA" -> NaN(number)
3. temp为布尔值: true -> 1, false -> 0
4. temp为null: 转化结果为0(number)
5. temp为undefined: 转化结果为NaN(number)
二、String( temp ) -> 把temp转化为字符串
与Object.prototype.toString的区别:
这种强制类型转换方法可以将 null 和 undefined 这样不具备toString()属性的值转化为字符串而不引发错误
三、Boolean( temp ) -> 把temp转化为boolean值
1. temp为 数字0 || 空字符串 || false || null || undefined || NaN时,转化的结果为: false
3. temp取值除了以上六种情况,其余均转化为true。
四、parseInt( temp ) -> 把temp转化为整数
转换规则: 从第一个字符开始检验是否是数字,如果不是数字,则直接返回NaN。如果是数字,把这个数字保留,继续检验下一个字符,直到检验到不是数字的字符,最终把保留的数字返回。
PS: 以下两种情况均是针对temp为字符串时的情况
1. 正常模式转换( parseInt( temp) )
<1>. 如果字符串的开头是0,则在转换过程中,会自动忽略
<2>. 如果字符串的开头是0x,则在转换过程中,会正确解析0x为十六进制的开头
例如: parseInt( "0123.12" ) -> 123, parseInt( "0x123.12" ) -> 2912. 基模式转换( parseInt(n, [2, 8, 10, 16]) )
<1>. 在转换时,会按照进制的有效字符去逐位判断,最终把转换的结果再转化为十进制返回。
<2>. 当字符串以 0 开头时
parseInt( "0123.12", 2 ) -> 01 (二进制) -> 1 (十进制)
parseInt( "0123.12", 8 ) -> 0123 (八进制) -> 83 (十进制)
parseInt( "0123.12", 10) -> 0123 (十进制) -> 123(十进制)
parseInt( "0123.12", 16 ) -> 0123 (十六进制) -> 291(十进制)
<3>. 当字符串以 0x 开头时
parseInt( "0x123.12", 2) -> 0 (二进制) -> 0 (十进制)
parseInt( "0x123.12", 8) -> 0 (二进制) -> 0 (十进制)
parseInt( "0x123.12", 10) -> 0 (十进制) -> 0 (十进制)
parseInt( "0x123.12", 16) -> 123 (十六进制) -> 291 (十进制)
五、parseFloat( temp ) -> 把temp转化为数字
1. 与parseInt()方法的处理方式相似,从位置0开始查看每个字符,直到找到第一个非有效的字符为止,然后把该字符之前的字符串转换成数字。
2. 与parseInt的区别
<1>. parseFloat没有基模式
<2>. 对于0开头的字符串,可理解为忽略0
<3>. 对于0x开头的字符串,可理解为x是无效字符