关于JS值的显式类型转换/隐式类型转换
显式类型转换
Number()
当( )内需转换的值不同时:
- 值是“123”或“3.14159”这种以数字组成的字符串时,返回数字类型的123,3.14159
- 值是“abc”或“23a”,有字符组成的字符串,或 undefined 时,返回数字类型的NaN
- 值是true、false、null(不是字符串)的关键字时,返回1,0,0
parseInt()
: 只能转换成整型,从第一位开始判断是否为数字
parseInt(value,radix)
:
-
radix 是进制,可以是按不同进制转换,ES5规定如果省略就代表用十进制解析
当( )内需转换的值不同时:
- 值是“123”/“3.14159”这种以数字组成的字符串时,返回小数点前面的数字,不会四舍五入;
- 值是true、false、null、undefined、NaN(不是字符串)的关键字时,返回NaN;
- 值是数字开头的,且有字符组成的字符串如“123ab11”时,返回字符前的数字;
- 值是以字符开头,且有数字组成的字符串如“fff88”时,返回NaN;
parseFloat()
只接受一个参数,只能使用十进制去解析
- 会把有小数点的数字字符串转换出来
- 若想保留几位小数,使用
.toFixed()
方法,( )里填需要保留几位,此方法返回的值会四舍五入
String()
转换为字符串
- 平时更多使用 值+“” (引号)去进行字符串的转换
toString(value,radix)
也可以填radix 几进制的转换
Boolean()
- undefined | null | NaN | “” | 0 转换的值都为 false
- 其余都是true
隐式类型转换
-
自增/自减
var a = '123'; a++; // 先将a隐式转换了,Number(a)再进行自增; console.log(a);
-
“+” 号拼接
var a = 'a' + 1; // 先将数字1隐式转换了,Number(1),再进行拼接; console.log(a