Javascript - 传递比函数声明更多的参数是不好的?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (36)

我有一个功能

function callback(obj){...}

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

callback(theObject, extraParam);

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

提问于
用户回答回答于

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

它们可以在arguments类似数组的对象中访问,该对象的数值属性包含调用函数时使用的参数的值,也length指示调用时还使用了多少个参数,以及一个属性callee属性,这是对函数本身的引用,例如你可以写:

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

arguments物体可能看起来像一个数组,但它是一个普通的对象,从继承Object.prototype,但如果你想使用就可以了阵列的方法,你可以直接调用它们Array.prototype,例如,一个常见的模式得到一个真正的数组是使用Array slice方法:

function test () {
  var args = Array.prototype.slice.call(arguments);
  return args.join(" ");
}
test("hello", "world"); // "hello world"

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

function test (one, two, three) {
  // ...
}
test.length; // 3
用户回答回答于

是的 - 它的良好做法,是一个强大的JavaScript功能

所属标签

可能回答问题的人

  • 天使的炫翼

    15 粉丝531 提问35 回答
  • 旺仔小小鹿

    社区 · 运营 (已认证)

    48 粉丝0 提问27 回答
  • 富有想象力的人

    2 粉丝0 提问26 回答
  • 发条丶魔灵1

    6 粉丝525 提问25 回答

扫码关注云+社区

领取腾讯云代金券