Home > Article > Web Front-end > Tips on using parseInt in javascript_Basic knowledge
I want to perform client-side verification on the date format filled in the form, so I found a piece of code on the Internet, which uses parseInt to judge the year, month and day. There are statements like this:
.... .
else if(parseInt(month)12)
......
But for the current correct date, it cannot be passed here. . Later, I found out after checking that parseInt actually has two parameters, the first is the value to be converted, and the second is the specified base. If the second parameter is not specified, then it can only correctly convert 01 to 07 (that is, convert them into 1 to 7). Starting from 08, it will convert according to the rule of "digits starting with 0 are octal numbers"! It happens to be September now, and the date I chose at random exposed this problem. If I had done this in the first half of the year, I would have left a BUG, and then the customer would wait until the second half of the year to tell me that the date could not be filled in.
So, wherever parseInt is used in the function, a second parameter is added to indicate decimal. For example, change the above sentence to:
......
else if(parseInt(month,10)12)
.... ..
Several times before, I encountered the parseInt function in JavaScript to convert strings into numbers. I encountered this problem several times before, so I switched to other methods for comparison.
When I go to the page to get a calendar thing, and then convert it into a number for comparison, there is always a problem with the month conversion.
When I use
var num = parseInt(01);
var num = parseInt(01);
...
var num = parseInt(07);
var num = parseInt(08);
var num = parseInt(09);
var num = parseInt(10);
If when I perform the above conversion,
parseInt(), there is no problem with the parameters passed in from 1 to 7, but when I use parseInt (08) There was a problem, the converted num=0
Due to the urgency of the project, I didn’t investigate it in detail
Now that I have time, I took a look at the parseInt javascript method.
The description of the JavaScript API is as follows:
parseInt method
returns the integer converted from the string.
parseInt(numString, [radix])
Parameters
numString
Required. The string to be converted to a number.
radix
Optional. A value between 2 and 36 representing the base of the number held by numString. If not provided, strings prefixed with '0x' are treated as hexadecimal, and strings prefixed with '0' are treated as octal. All other strings are treated as decimal.
After reading the above API, I found out that when the parameters I transferred were from 01 to 08, the parameters started with '0', so they were converted to octal. And because octal can only represent 0 to 7, when my parameter is 01 to 07, the conversion is correct. When it is 08, it is carried and converted to 0. And parseInt(10) can correctly convert to 10
So the rule is not to omit the last parameter.
Use parseInt(08,10); to convert it correctly.