说下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
可能会被误判为八进制。
总而言之,理解它们之间的区别可以帮助你根据具体场景选择合适的函数,避免潜在的错误。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律