检验函数实参与形参个数

《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);
  }
原文地址:https://www.cnblogs.com/LeoXnote/p/13280321.html