说下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 可能会被误判为八进制。

总而言之,理解它们之间的区别可以帮助你根据具体场景选择合适的函数,避免潜在的错误。

posted @   王铁柱6  阅读(153)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示