2011-09-06 91 views

回答

13

如果参数从0开始,它将被解析为八进制数,而08不是有效的八进制数。提供第二个参数10,它指定基数 - 基数为10的数字。

document.write(parseInt("08", 10)); 
2

你想parseInt('08', 10)告诉它解析为十进制。

5

使用本变形例

parseInt(string, radix)

如果省略radix参数

parseInt("08",10); 

规则,JavaScript的假定:

  • 如果字符串以 “0x” 开始,基数是16(十六进制)
  • 如果字符串以“0”开始,则基数为8(八进制)。此功能已被弃用
  • 如果字符串以其他任何值开头,基数是10(十进制)
1

试试这个:

parseInt('08', 10) 

就会产生8

2

你只使用以错误的方式输入该函数的参数。有关更多信息,请查询this。基本上:

parseInt()函数解析一个字符串并返回一个整数。

基数参数用于指定其中标号系统 使用,例如,16(十六进制)的一个基数表示该串中的 数量应该从一个十六进制数被解析到一个 十进制数为。

如果省略radix参数,JavaScript的假定: 如果字符串以“0x”开始,基数是16(十六进制)如果 字符串用“0”开始,基数是8(八进制) 。此功能 弃用如果字符串以其他任何值开头,基数是10 (十进制)

所以07和08被解析成八进制。这就是为什么07是7和08是0(这是四舍五入最接近)