JavaScript parseInt() 函数

JavaScript parseInt() 语法

parseInt() 是 JavaScript 的一个全局函数,它用于将一个字符串转换为一个整数。parseInt() 函数会提取字符串 “开头” 包含的整数部分。

语法:

parseInt(string, radix)

说明:

parseInt() 方法接收以下 2 个参数。

  • string(必选):是一个字符串。
  • radix(可选):表示什么进制,它是介于 2~36 之间的整数。比如 2 表示 2 进制,8 表示 8 进制,以此类推。

提示:

  • parseInt() 是一个全局函数(顶层函数),我们可以直接调用而无需创建实例。
  • parseInt() 在 ES6 中被标准化为 Number.parseInt(),两者的功能行为完全一致。不过,parseInt() 作为全局函数仍然广泛被接受和使用。
  • 与 parseInt() 相似的还有一个 parseFloat() 函数,另请参阅:JavaScript parseFloat() 函数

JavaScript parseInt() 摘要

属于 JavaScript 全局对象
使用频率
官方文档 查看
MDN 查看

JavaScript parseInt() 示例

接下来,我们通过一个简单的例子来讲解一下 JavaScript parseInt() 是如何使用的。

示例 1:parseInt() 基本用法

console.log(parseInt("123"));
console.log(parseInt("3.1415"));
console.log(parseInt("100px"));
console.log(parseInt("hao123"));
console.log(parseInt("lvyenet"));

运行结果如下。

123
3
100
NaN
NaN

分析:

从上面例子可以看出:parseInt() 会从左到右进行判断,如果第 1 个字符是数字,则继续判断,直到出现非数字为止;如果第 1 个字符是非数字,则直接返回 NaN

深入理解 parseInt()

当然了,上面例子的结论并不等于最终结论。不过在大多数情况下,我们只需要记住上面结论已经够用了。下面再来看几种特殊情况。

示例 2:parseInt() 判断的字符串包含加减号

console.log(parseInt("+123"));
console.log(parseInt("-123"));

运行结果如下。

123
-123

分析:

这里第 1 个字符是加号(+)或减号(-),也就是非数字,parseInt() 同样可以识别它们。因为加号和减号在数学上其实就是用于表示一个数的正负,所以 parseInt() 可以接受第 1 个字符是加号或减号。

前面两个例子考虑的都是十进制的情况,比如 parseInt("123") 本质上等价于 parseInt("123", 10)。下面再来考虑一下其他进制情况。

示例 3:parseInt() 接收 2 个参数

console.log(parseInt("F", 16));
console.log(parseInt("0xF"));

console.log(parseInt("06", 8));
console.log(parseInt("06", 10));

运行结果如下。

15
15
6
6

分析:

现在我们可以总结一下:parseInt() 会从左到右进行判断,如果第 1 个字符是 “+”、“-”、“0”、“0x” 或 1~9 的数字,则继续判断,直到出现非数字为止;如果第 1 个字符是其他字符,则直接返回 NaN

  • 如果第 1 个字符是 “+” 或 “-”,parseInt() 会自动识别其为数学意义上的加号或减号。
  • 在较新的标准中,如果字符串以 “0” 开头且后面不跟 “x”,则默认为 10 进制。但在旧环境中可能被视为 8 进制。为了避免歧义,建议始终显式指定第二个参数,即 parseInt(str, 10)。
  • 如果第 1 个字符是 “0x”,parseInt() 会自动识别其为 16 进制。

示例 4:parseInt() 更多使用

console.log(parseInt("360deg", 10));
console.log(parseInt("360deg", 8));
console.log(parseInt("360deg", 16));

运行结果如下。

360
240
221406

上一篇: clearInterval()

下一篇: parseFloat()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号