首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >传递比函数声明更多的参数是不好的吗?

传递比函数声明更多的参数是不好的吗?
EN

Stack Overflow用户
提问于 2010-03-27 01:56:22
回答 2查看 11.4K关注 0票数 25

我有一个函数

代码语言:javascript
复制
function callback(obj){...}

可以传入比函数签名中声明的更多的对象吗?例如,这样叫它:

代码语言:javascript
复制
callback(theObject, extraParam);

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-27 01:58:59

JavaScript允许这样做,你可以向一个函数传递任意数量的参数。

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

代码语言:javascript
复制
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

数组对象可能看起来像一个数组,但它是一个继承自Object.prototype的普通对象,但如果要对其使用arguments方法,则可以直接从Array.prototype调用它们,例如,获取实际数组的常见模式是使用slice方法:

代码语言:javascript
复制
function test () {
  var args = Array.prototype.slice.call(arguments);
  return args.join(" ");
}
test("hello", "world"); // "hello world"

此外,使用function对象的length属性,还可以知道函数需要多少个参数:

代码语言:javascript
复制
function test (one, two, three) {
  // ...
}
test.length; // 3
票数 44
EN

Stack Overflow用户

发布于 2010-03-27 02:08:01

是的,这样做--这是一个很好的实践,而且是一个强大的JavaScript特性

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2525568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档