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