js传参的问题

var optimizeCb = function(func, context, argCount) {
    if (context === void 0) return func;
    switch (argCount == null ? 3 : argCount) {
      case 1: return function(value) {
        return func.call(context, value);
      };
      case 2: return function(value, other) {
        return func.call(context, value, other);
      };
      case 3: return function(value, index, collection) {
        return func.call(context, value, index, collection);
      };
      case 4: return function(accumulator, value, index, collection) {
        return func.call(context, accumulator, value, index, collection);
      };
    }
    return function() {
      return func.apply(context, arguments);
    };
  };

我不太理解optimizeCb只传入了3个参数,但是里边的判断语句像下边这句

case 4: return function(accumulator, value, index, collection) {
    return func.call(context, accumulator, value, index, collection);
};

这个内部函数的accumulator, value, index, collection这些参数是从哪里来的呢?

阅读 1.9k
1 个回答

它返回的是一个函数本身,这个返回的函数肯定是要拿到别的地方运行的,这些参数当然就是运行的时候输入的啦。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题