parseInt问题?

parseInt('1-9')// 1

这是为什么?

阅读 1.8k
2 个回答

1后面的字符会忽略

如果 parseInt 遇到的字符不是指定 radix 参数中的数字,它将忽略该字符以及所有后续字符,并返回到该点为止已解析的整数值。parseInt 将数字截断为整数值。允许前导和尾随空格。

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Refer...

parseInt能够接收两个参数,parseInt(string, radix) 。
如果 radix 是 undefined、0 或未指定的,JavaScript 会假定以下情况:

  • 如果输入的 string 以 0x 或 0X(一个 0,后面是小写或大写的 X)开头,那么 radix 被假定为 16,字符串的其余部分被当做十六进制数去解析。
  • 如果输入的 string 以 "0"(0)开头,radix 被假定为 8(八进制)或 10(十进制)。具体选择哪一个 radix 取决于实现。ECMAScript 5 澄清了应该使用 10 (十进制),但不是所有的浏览器都支持。因此,在使用 parseInt 时,一定要指定一个 radix。
  • 如果输入的 string 以任何其他值开头,radix 是 10 (十进制)。

得出parseInt('1-9')相当于parseInt('1-9', 10)。

如果 parseInt 遇到的字符不是指定 radix 参数中的数字,它将忽略该字符以及所有后续字符,并返回到该点为止已解析的整数值。parseInt 将数字截断为整数值。允许前导和尾随空格。

所以parseInt('1-9', 10)的结果为1。
其它示例:

parseInt('12-9')     // 12
parseInt('123A9')    // 123
parseInt('A123')     // NaN

其它说明请见MDN:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Refer...

推荐问题
logo
Microsoft
子站问答
访问
宣传栏