发现javascript中的parseInt函数的一个"bug":
parseInt("07") = 7
parseInt("08") = 0
parseInt("09") = 0
原因:
原来当前面有0的时候,parseInt默认把它当作八进制处理了,01--07自然没有问题。
但是09,08都是不合格的八进制形式,所以被按照0处理了。
解决方案:
利用parseInt函数的另一个参数,显示指定parseInt按十进制处理。
例如:
parseInt("08",10) =8
parseInt("09",10) =9
问题解决!
附录:
parseInt("F", 16)
parseInt("17", 8)
parseInt("15", 10)
parseInt(15.99, 10)
parseInt("FXX123", 16)
parseInt("1111", 2)
parseInt("15*3", 10)
The following examples all return "NaN":
parseInt("Hello", 8)
parseInt("0x7", 10)
parseInt("FFF", 10)
Even though the radix is specified differently, the following examples all return 17 because the input string begins with "0x".
parseInt("0x11", 16)
parseInt("0x11", 0)
parseInt("0x11")
parseInt("07") = 7
parseInt("08") = 0
parseInt("09") = 0
原因:
原来当前面有0的时候,parseInt默认把它当作八进制处理了,01--07自然没有问题。
但是09,08都是不合格的八进制形式,所以被按照0处理了。
解决方案:
利用parseInt函数的另一个参数,显示指定parseInt按十进制处理。
例如:
parseInt("08",10) =8
parseInt("09",10) =9
问题解决!
附录:
parseInt
Parses a string argument and returns an integer of the specified radix or base.
| string | A string that represents the value you want to parse. |
| radix | (Optional) An integer that represents the radix of the return value. |
描述
The parseInt function is a built-in JavaScript function. The parseInt function parses its first argument, a string, and attempts to return an integer of the specified radix (base). For example, a radix of 10 indicates to convert to a decimal number, 8 octal, 16 hexadecimal, and so on. For radixes above 10, the letters of the alphabet indicate numerals greater than 9. For example, for hexadecimal numbers (base 16), A through F are used. If parseInt encounters a character that is not a numeral in the specified radix, it ignores it and all succeeding characters and returns the integer value parsed up to that point. parseInt truncates numbers to integer values. If the radix is not specified or is specified as 0, JavaScript assumes the following:- If the input string begins with "0x", the radix is 16 (hexadecimal).
- If the input string begins with "0", the radix is eight (octal).
- If the input string begins with any other value, the radix is 10 (decimal).
示例
The following examples all return 15:parseInt("F", 16)
parseInt("17", 8)
parseInt("15", 10)
parseInt(15.99, 10)
parseInt("FXX123", 16)
parseInt("1111", 2)
parseInt("15*3", 10)
The following examples all return "NaN":
parseInt("Hello", 8)
parseInt("0x7", 10)
parseInt("FFF", 10)
Even though the radix is specified differently, the following examples all return 17 because the input string begins with "0x".
parseInt("0x11", 16)
parseInt("0x11", 0)
parseInt("0x11")

