我是Javascript新手,需要对此脚本进行更改。然而,我注意到这一行代码让我彻底困惑。此声明是否会评估为真?
function FIValidateForm(aForWhom, aDoNotShowWarning, aFromWhere)
{
try
{
PAIWarnings = '';
var pBlFalg = true;
if (pBlFalg)
pBlFalg = mfpCheckForFISave(aForWhom, aDoNotShowWarning, aFromWhere);
if (pBlFalg == true)
pBlFalg = PAIErrors();
if ((pBlFalg) && (FIValidateForm.arguments.length == 1))
mfpIFWarnings();
return pBlFalg;
}
catch (err)
{
logError(err, arguments.callee.trace());
}
}
在运行时,如果我把一个断点上第三if
声明和检查FIValidateForm.arguments
我可以看到3个项目的数组。第一个包含string
,第二个包含null
,第三个包含undefined
。该阵列仍然有3的长度。
我是否正确的假设无论通过什么样的方法,FIValidateForm.arguments.length == 1
将永远是false
?还是有一些其他值我不知道/另一种方法来调用这种方法,以便arguments.length
会等于1?
编辑:我看到JS有一个arguments.length
和Function.length
。后者返回预期的数量的参数...那么,如何调用一个方法,以便在函数定义为3时值为1?
尝试用第一个参数调用该函数,看看会发生什么。 –