《JavaScript权威指南》中写道:
在函数体里,arguments.length表示传入函数的实参的个数。而函数本身的length属性则有着不同含义。函数的length属性是只读属性,它代表函数实参的数量,这里的参数指的是“形参”而非“实参”,也就是在函数定义时给出的实参个数,通常也是在函数调用时期望传人函数的实参个数。
所以检验方法如下:
//这个函数使用arguments.callee,因此它不能在严格模式下工作 function check(arguments) { let actual = arguments.length; //实参的真实个数 let expected = arguments.callee.length; //期望的实参个数 if (actual !== expected) //如果不同则抛出异常 throw Error("Expected ”+ expected +' 'arguments; got" + actual); }