parseInt(string, radix)
函数有两个调用方式
1、指定radix,这也是推荐的方式,很不幸我之前都不是这样做的
2、不指定radix,即:parseInt(string)。虽然简单,但规则很多,这也是本文阐述内容的核心。
parseInt(string, radix)
radix,表示转换的基数,也就是我们常说的2进制、8进制、10进制、16进制等。范围从2~36,但我们在JS中一般调用该方法时,基本都是以10为基数进行转换的。
如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。
“string”参数应用的详细规则如下
(以基数10作为示例,原因是在实际使用时,出现频率最高。而其它基数的使用,你还需要很清楚各进制之间的转换,这个应该是计算机专业的重点课程,如果忘记了,那使用这个方法就会很“难受”):
1)如果都是字母,返回:NaN,例:
代码如下 | 复制代码 |
<script type="text/javascript"> window.onload = function testParse() { alert(parseInt("abc", 10)); } </script>2)如果都不是字母,返回:123,例: <script type="text/javascript"> |
如果字母和数字都存在,例:
代码如下 | 复制代码 |
<script type="text/javascript"> window.onload = function testParse() { alert(parseInt("1x2bc", 10)); alert(parseInt("df2bc", 10)); } </script>parseInt("1x2bc", 10)返回:1 parseInt("df2bc", 10) |
返回:NaN
这里涉及到两个规则:
3.1)如果参数“string”,以数字开头,则取截止到第一个字母出现之前的所有数字进行转换(NND,总是感觉描述不到位)。
上例中,第一个出现的字母是‘x’,取之前的数字串,只有一个数字'1',结果就返回1
3.2)如果参数“string”,以字母开头,直接返回NaN(因为10进制中字母不是一个有效的的表示,若radix为16呢?结果大家可以自行运行。)
以上描述按照ECMAScript的解释(官方翻译,很给力):
parseInt() 方法首先查看位置 0 处的字符,判断它是否是个有效数字;如果不是,该方法将返回 NaN,不再继续执行其他操作。但如果该字符是有效数字,该方法将查看位置 1 处的字符,进行同样的测试。这一过程将持续到发现非有效数字的字符为止,此时 parseInt() 将把该字符之前的字符串转换成数字。
parseInt(string,radix)就介绍到这,如果有不对或者遗漏的,请看官们补充,在此谢过了
parseInt(string)
以这种方式调用该函数时,因为没有显示的指定radix,会存在很多“潜规则”
下面是两段引用
w3school
当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。
举例,如果 string 以 "0x" 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字。如果string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。
mozilla开发者
•If the input string begins with "0x" or "0X", radix is 16 (hexadecimal) and the remainder of the string is parsed.
•If the input string begins with "0", radix is eight (octal) or 10 (decimal). Exactly which radix is chosen is implementation-dependent. ECMAScript 5 specifies that 10 (decimal) is used, but not all browsers support this yet. For this reason always specify a radix when using parseInt.
•If the input string begins with any other value, the radix is 10 (decimal).
If the first character cannot be converted to a number, parseInt returns NaN.
首页 1 2 末页