Home > Article > Web Front-end > A brief discussion on parseInt function in js_Basic knowledge
Let’s start with the very popular example parseInt("09")==0.
parseInt(number,type) If this function is not followed by the second parameter to represent the base, the default is decimal.
For example, parseInt("010",10) is the decimal result: 10,
parseInt("010",2) is the binary result: 2,
parseInt("010" ,8) is the result of octal system: 8,
parseInt("010",16) is the result of binary system: 16.
Let me talk about it below. When the base unit is not specified, the default is decimal. However: if the Number inside starts with 0, it is considered to be octal. If it starts with 0x, it is considered to be 16. Hexadecimal.
parseInt("10")==>parseInt("010",10)===>10parseInt("010")==>parseInt("010",8)==>8parseInt( "0x10")==>parseInt("010",16)==>16.
It went very smoothly here.
Many things are not as smooth as expected. For example, if Number is not the normal number we gave, how can we explain it. After checking some information, this is what it says:
parseInt(Number) If the Number in the middle encounters something that is not a number (0-9), the parsing will be interrupted, and only the value before it is not a number will be used for calculation: such as parseInt ("100x"), which is equivalent to parseInt("100")===》parseInt("100",10)==>100, and parseInt("0100x")===>parseInt("0100 ")===>parseInt("100",8)===>64.
One thing we seem to have ignored here is that there is an x in hexadecimal. It is not a number. Is it an encounter? Even x was ignored. After trying it, I found that under this special treatment,
For example, parseInt("0x10")===>parseInt("10",16)===>16 is consistent with the top result, but it is consistent with the top result. What I just said is that if characters are not automatically parsed, it should be understood as parseInt("0"), which is contrary to the rules.
You need to pay attention here. The Number in parseInt is like this. If the first one is not 0 and is not a character, it is considered to be decimal. Everything will be executed as usual, and it will stop when it encounters a letter. And if the first one is 0, you need to pay attention to the following one. If it is Just follow the rules we mentioned above to stop parsing when encountering non-digits. For example, parseInt("0xt")==>parseInt("0x")==>parseInt("",16) is NaN.
To summarize, the value in parseInt(Number): If the first digit is not 0, it will stop parsing when it encounters a letter, and the value in front of the letter will be parsed as a decimal. If the first digit is a letter, then the value It is empty, and empty becomes NaN,
For example: parseInt("a")==>parseInt("",10)==>NaN.parseInt("10a")==>parseInt("10 ")==>parseInt("10",10)==>10;
If the first digit is 0 and the second digit is not The previous value is parsed as octal, for example: parseInt("0a")==>parseInt("0")==>parseInt("0",10)==>0.PS: This is a bit Special, because 0a is parsed into 0, and it does not have a structure that can be regarded as an octal system. The following one is obvious.
parseInt("010a")==>parseInt("010")==>parseInt("10",8)==>8;If the first digit is 0 and the second digit is x Then, as above, it stops parsing when it encounters letters, and parses the value in front of the letters as hexadecimal, for example: parseInt("0xt")==>parseInt("",16)==>NaN .parseInt("0x12t")==>parseInt("12",16)==>18.