作为一个案例研究,我试图掌握这个使用 parseInt()
函数的代码片段,并有几个问题:
var maxChars = parseInt( formField.attr('maxlength') ? formField.attr('maxlength') : counter.text() );
为什么
formField.attr('maxlength')
两次?在此示例中,基数参数如何工作?
radix
是base
的另一个名称,即 2 表示二进制,10 表示十进制,16 表示十六进制,在 Mozilla 开发者网络网站上进行了更详细的解释。
在您的示例中,没有基数参数,因此解释器将回退到默认行为,该行为通常将数字视为十进制,除非它们以零(八进制(或0x
(十六进制(开头。
在 ECMA 脚本 5 中,当字符串以 0 开头且未指定基数时,默认行为为十进制(与八进制的早期版本相反(
来源:Mozilla 开发者网络上的 parseInt((
parseInt 有两个参数,第二个是可选的。字符串和基数。
字符串是要分析的值。如果提供的值不是字符串,则会将其转换为字符串。
基数是介于 2 和 36 之间的整数,表示上述字符串的基数(数学数字系统中的基数(。
在您的代码片段中,未指定基数,假定为默认值 16。
var maxChars = parseInt( formField.attr('maxlength') ? formField.attr('maxlength') : counter.text() );
您正在定义一个名为"maxChars"的变量。此变量等于对简写 IF 语句的求值。
您正在从变量中获取属性,该变量应该是一个名为"maxLength"的选择器"formField"。该值将作为整数返回,它将回退到它的默认基数上。
IF 语句检查返回值是真还是假。 0, 假, ectcetera 将导致变量 "maxChars" 的值设置为"计数器"组合文本。如果为 true,则会导致变量被设置为名为"maxLength"的选择器"formField"属性。
formField.attr('maxlength')
存在两次,因为一个用于 IF 语句计算,另一个用作值,如果 IF 语句中的条件结果为 TRUE。