说下js的parseInt()和Number()有什么区别?
parseInt() 和 Number() 都是 JavaScript 中用来将字符串转换为数字的函数,但它们的工作方式和应用场景有所不同:
parseInt(string, radix)
- 用途: 主要用于解析字符串的一部分,将其转换为整数。它会从字符串的开头开始解析,直到遇到非数字字符为止。
- radix 参数: 可选参数,表示字符串的基数(进制)。如果不指定,则默认为 10 进制。 它允许你解析不同进制的数字字符串,例如二进制、八进制、十六进制等。 对于16进制的字符串,如果以
0x或者0X开头,radix参数可以省略。 - 返回值: 返回解析后的整数。如果字符串无法解析为整数(例如,以非数字字符开头,或者为空字符串),则返回
NaN。 - 处理小数:
parseInt()会截断小数部分,只保留整数部分。 - 处理空格:
parseInt()会忽略字符串前后的空格。
Number(value)
- 用途: 将各种类型的值转换为数字类型。它尝试将整个字符串转换为数字。
- 参数: 接受一个值作为参数,可以是字符串、布尔值、日期对象等。
- 返回值: 如果转换成功,返回对应的数字。如果转换失败,返回
NaN。 - 处理小数:
Number()可以正确处理小数,返回浮点数。 - 处理空格:
Number()对字符串中的空格更敏感。如果字符串包含空格(除了前导和尾随空格),则会返回NaN。
总结:
| 特性 | parseInt() | Number() |
|---|---|---|
| 主要用途 | 解析字符串的一部分为整数 | 将整个值转换为数字 |
| radix 参数 | 支持,用于指定进制 | 不支持 |
| 小数处理 | 截断小数部分 | 保留小数部分 |
| 空格处理 | 忽略前导和尾随空格 | 除了前导和尾随空格,其他空格会导致返回 NaN |
| 空字符串处理 | 返回 NaN | 返回 0 |
| "123px" 处理 | 返回 123 | 返回 NaN |
| "123.45" 处理 | 返回 123 | 返回 123.45 |
| " 123 " 处理 | 返回 123 | 返回 123 |
| "12 34" 处理 | 返回 12 | 返回 NaN |
示例:
parseInt("123px", 10); // 返回 123
Number("123px"); // 返回 NaN
parseInt("123.45", 10); // 返回 123
Number("123.45"); // 返回 123.45
parseInt("0xF", 16); // 返回 15
parseInt("0xF"); // 返回 15
Number("0xF"); // 返回 15
parseInt(" 123 "); // 返回 123
Number(" 123 "); // 返回 123
parseInt("12 34"); // 返回 12
Number("12 34"); // 返回 NaN
parseInt(""); // 返回 NaN
Number(""); // 返回 0
建议:
- 如果你需要从字符串中提取整数,并且字符串可能包含非数字字符,使用
parseInt()。 - 如果你需要将整个字符串转换为数字(包括小数),并且字符串格式比较规范,使用
Number()。 - 始终使用
radix参数明确指定parseInt()的进制,避免出现意外结果。尤其是在处理0开头的字符串时,不指定radix可能会被误判为八进制。
总而言之,理解它们之间的区别可以帮助你根据具体场景选择合适的函数,避免潜在的错误。
浙公网安备 33010602011771号