使用 JS arguments 对象的 length 属性可以获取函数的实参个数。arguments 对象只能在函数体内可见,因此 arguments.length 也只能在函数体内使用。
使用函数对象的 length 属性可以获取函数的形参个数。该属性为只读属性,在函数体内、体外都可以使用。
下面示例设计一个 checkArg() 函数,用来检测一个函数的形参和实参是否一致,如果不一致则抛出异常。
function checkArg(a) { //检测函数实参与形参是否一致
if (a.length != a.callee.length) //如果实参与形参个数不同,则抛出错误
throw new Error("实参和形参不一致");
}
function f(a, b) { //求两个数的平均值
checkArg(arguments); //根据arguments来检测函数实参和形参是否一致
return ((a * 1 ? a : 0) + (b * 1 ? b : 0)) / 2; //返回平均值
}
console.log(f(6)); //抛出异常。调用函数f,传入一个参数
温馨提示:读者可以转到 arguments.callee 了解第 2 行代码中 callee 的用法。