任何人都可以解释 parseInt()函数的工作原理以及 Radix参数是什么?
作为案例研究,我试图掌握这段代码:
var maxChars = parseInt( formField.attr('maxlength') ? formField.attr('maxlength') : counter.text() );
你能解释一下这段代码是如何工作的吗?为什么 formField.attr('maxlength')有两次?我发现在这里使用运算符非常令人困惑!
Radix参数如何在此示例中起作用?
答案 0 :(得分:38)
radix
是base
的另一个名称,即2表示二进制,10表示十进制,16表示十六进制,详细解释于Mozilla Developer Network site。
在您的示例中没有基数参数,因此解释器将回退到默认行为,通常将数字视为十进制,除非它们以零(八进制)或{{1开头(十六进制)。
答案 1 :(得分:4)
在ECMA Script 5中,当字符串以0开头且未指定基数时,默认行为为十进制(与早期版本的八进制相反)
答案 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,则另一个用作值。