使用Javascript parseInt()和Radix参数

时间:2012-05-01 14:05:25

标签: javascript parseint radix

任何人都可以解释 parseInt()函数的工作原理以及 Radix参数是什么?

作为案例研究,我试图掌握这段代码:

var maxChars = parseInt( formField.attr('maxlength') ? formField.attr('maxlength') : counter.text() );

你能解释一下这段代码是如何工作的吗?为什么 formField.attr('maxlength')有两次?我发现在这里使用运算符非常令人困惑!

Radix参数如何在此示例中起作用?

3 个答案:

答案 0 :(得分:38)

radixbase的另一个名称,即2表示二进制,10表示十进制,16表示十六进制,详细解释于Mozilla Developer Network site

在您的示例中没有基数参数,因此解释器将回退到默认行为,通常将数字视为十进制,除非它们以零(八进制)或{{1开头(十六进制)。

答案 1 :(得分:4)

在ECMA Script 5中,当字符串以0开头且未指定基数时,默认行为为十进制(与早期版本的八进制相反)

来源:parseInt() on Mozilla Developer Network

答案 2 :(得分:0)

parseInt 带有两个参数,第二个是可选的。字符串和基数。

字符串是要解析的值。如果提供的值不是字符串,则会将其转换为字符串。

基数 2到36之间的整数,表示上述字符串的基数(数学数字系统中的基数)。

在您的代码段中,Radix未指定,并且假定为默认值16。

var maxChars = parseInt( formField.attr('maxlength') ? formField.attr('maxlength') : counter.text() );

您正在定义一个名为" maxChars"的变量。该变量等于短手IF语句的评估。

您正在从变量中获取该属性,该变量应该是一个选择器" formField"叫" maxLength"。该值将以整数形式返回,它将回退到它的默认基数。

IF语句检查返回值是true还是false。 0,false,ectcetera会导致变量的值" maxChars"被设置为"柜台"合并文字。如果为true,则会将变量设置为选择器" formField"属性名为" maxLength"。

formField.attr('maxlength')

是否有两次,因为在IF语句评估中使用了一个,如果IF语句中的条件为TRUE,则另一个用作值。