JS学习--数值转换时,Number(),parseInt()和parseFloat()的区别

一. Number()

1.参数为Boolean时,true为1,false为2

Number(true); // 1
Number(false); // 0

2.参数为String时

// 1. 当字符串中有字母时
Number("abc"); // NaN
Number("abc123"); // NaN
Number("123abc"); // NaN

// 2. 当字符串中只有数字时(数字前可以有正负号)
Number("123"); // 123
Number("+123"); // 123
Number("-123"); // -123
Number("0123"); // 123 忽略前导0

// 小数
Number("1.23"); // 1.23

// 十六进制数会转为十进制
Number("0xf"); // 15

// 空字符串转为0
Number(""); // 0

3.参数为null,返回0

Number(null); // 0

4.参数为undefined,返回NaN

Number(undefined); // NaN

5.参数为对象,则调用对象的valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果为NaN,则调用对象的toString()方法,然后再按照前面的规则转换返回的字符串值。

// 数字数组
Number([1, 2]); // NaN
Number([1]); // 1

// 字符串数组
Number(["1", "2"]); // NaN
Number(["1"]); // 1
Number(["a"]); // NaN
Number([null]); // 0

6.数字则转换成对应的数值

Number(1); // 1
Number(-0.1); // -0.1

二. parseInt()

1.参数为Boolean时,返回NaN

parseInt(true); // NaN
parseInt(false); // NaN

2.参数为String时,一个字符一个字符解析,直到解析完或遇到第一个非数字字符。
注:小数点也不是有效的数字字符。

// 既有数字,又有字符
parseInt("abc123"); // NaN
parseInt("123abc"); // 123

// 整数
parseInt("000123"); // 123 忽略前导0

// 小数
parseInt("1.23"); // 1

// 十六进制,第二个参数指定转换时使用的基数(即几进制)
parseInt("0xAF"); // 175
parseInt("AF"); // NaN
parseInt("0xAF", 16); // 175 指定按十六进制解析
parseInt("AF", 16); // 175 指定按十六进制解析

// 八进制
parseInt("070"); // 70 ES5认为其为70(十进制)
parseInt("70"); // 70
parseInt("070", 8); // 56 指定按八进制解析
parseInt("70", 8); // 56 指定按八进制解析

// 空字符
parseInt(""); // NaN

3.参数为对象

// 数组,解析第一个值
parseInt([1,2]); // 1
parseInt([1, "a"]); // 1
parseInt(["a", 1]); // NaN

三. parseFloat()

1.参数为Boolean时,返回NaN

parseFloat(true); // NaN
parseFloat(false); // NaN

2.参数为String时,一个字符一个字符解析,直到解析完或遇到一个无效的浮点数字字符为止。
即:字符串中第一个小数点是有效的,第二个小数点是无效的。
注:parseFloat()无第二个参数,不能解析十六进制数。

// 既有数字,又有字符
parseFloat("123.456abc"); // 123.456
parseFloat("abc123.456"); // NaN

// 小数
parseFloat(".456"); // 0.456
parseFloat("000012.34"); // 12.34 忽略前导0
parseFloat("123.456.789"); // 123.456 第二个小数点无效
parseFloat("1.23e5"); // 123000

// 十六进制
parseFloat("0xAF"); // 0

// 空字符
parseFloat(""); // NaN

四. 总结

  1. Number()能转换boolean值,null,只含整数或小数的字符串,空字符串,对象。
  2. parseInt()按字符解析,直到遇见第一个非数字字符为止。
  3. parseFloat()按字符解析,直到遇见一个无效的浮点数字字符为止。
发布了18 篇原创文章 · 获赞 0 · 访问量 2534

猜你喜欢

转载自blog.csdn.net/weixin_36465540/article/details/89381700
今日推荐