Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 传递的参数多于函数声明的参数是否不好?_Javascript - Fatal编程技术网

Javascript 传递的参数多于函数声明的参数是否不好?

Javascript 传递的参数多于函数声明的参数是否不好?,javascript,Javascript,我有一个函数 function callback(obj){...} 传入的对象比函数签名中声明的对象多,可以吗?e、 g.这样称呼它: callback(theObject, extraParam); 我在Firefox上试用过,似乎没有问题,但这样做不好吗?JavaScript允许这样做,您可以向函数传递任意数量的参数 它们可以在对象中访问,该对象是一个类似数组的对象,具有数字属性,其中包含调用函数时使用的参数值,length属性告诉您调用时使用了多少个参数,以及被调用方属性,该属性是对

我有一个函数

function callback(obj){...}
传入的对象比函数签名中声明的对象多,可以吗?e、 g.这样称呼它:

callback(theObject, extraParam);

我在Firefox上试用过,似乎没有问题,但这样做不好吗?

JavaScript允许这样做,您可以向函数传递任意数量的参数

它们可以在对象中访问,该对象是一个类似数组的对象,具有数字属性,其中包含调用函数时使用的参数值,
length
属性告诉您调用时使用了多少个参数,以及
被调用方
属性,该属性是对函数本身的引用,例如,您可以编写:

function sum(/*arg1, arg2, ... , argN  */) { // no arguments defined
  var i, result = 0;
  for (i = 0; i < arguments.length; i++) {
    result += arguments[i];
  }
  return result;
}
sum(1, 2, 3, 4); // 10
此外,您还可以使用函数对象的
length
属性了解函数需要多少参数:

function test (one, two, three) {
  // ...
}
test.length; // 3

是的,这样做-这是一个很好的实践,是一个强大的JavaScript功能

您可以在函数中调用
test.length
来测试用户输入的参数数量吗?或者可以使用
[].slice.call(参数)function test (one, two, three) {
  // ...
}
test.length; // 3