理解 JavaScript 中的 parseInt 函数

在JavaScript中 parseInt() 是一个非常常用的全局函数,用于将字符串转换为整数。

1. 基本语法

1
parseInt(string, radix);
  • string: 要解析的字符串。如果传入的是非字符串类型,它会首先被转换为字符串。
  • radix: 进制数。可以是 2 到 36 之间的整数,表示数字的基数。如果省略或为 0,默认是 10。
1
2
3
console.log(parseInt('42'));    // 42
console.log(parseInt('101', 2)); // 5 (二进制数 101 等于十进制的 5)
console.log(parseInt('FF', 16)); // 255 (十六进制的 'FF' 等于十进制的 255)

2. radix参数

radix 是 parseInt() 的第二个参数,用于指定要解析的数字的进制。如果不传入 radix,则 parseInt() 会根据字符串的前缀自动判断使用的进制。

  • 如果字符串以 0x 或 0X 开头,则视为十六进制数。
  • 如果字符串以 0 开头,则视为八进制数。
1
2
console.log(parseInt('0x10')); // 16 (十六进制)
console.log(parseInt('010')); // 10

不同浏览器对没有 radix 参数时的解析行为可能不同,这可能导致兼容性问题。因此,最好显式指定 radix。

1
2
3
4
console.log(parseInt('08'));  // 8
console.log(parseInt('09')); // NaN, 旧版js可能会解析为八进制,而现代浏览器会以十进制处理
console.log(parseInt('08', 10)); // 8
console.log(parseInt('09', 10)); // 9

3. parseInt() 的返回值

如果成功解析传入的字符串,则返回相应的整数值。

如果字符串的第一个字符不是数字,则返回 NaN

1
2
3
console.log(parseInt('123abc'));   // 123 (解析出数字 '123')
console.log(parseInt('abc123')); // NaN (不能解析)
console.log(parseInt(' 42 ')); // 42 (忽略前后的空格)

4. parseInt() 忽略非数字字符

parseInt() 从字符串的第一个字符开始解析,直到遇到一个非数字字符为止它和它之后的部分都会被忽略。

1
2
3
console.log(parseInt('123abc'));  // 123
console.log(parseInt('123.45')); // 123 (小数点被忽略)
console.log(parseInt('10px')); // 10 (单位部分被忽略)

5. NaNisNaN()

parseInt() 无法解析字符串时,会返回 NaNNaN 是一个特殊的值,用来表示 “不是一个数字”。为了检查一个值是否是 NaN,可以使用 isNaN() 函数。

1
2
console.log(parseInt('abc'));    // NaN
console.log(isNaN(parseInt('abc'))); // true

理解 JavaScript 中的 parseInt 函数
http://example.com/2023/09/22/js-parseint/
作者
Donghao Ji
发布于
2023年9月22日
许可协议