将“(0)”附加到此闭包函数的目的是什么?

时间:2015-01-16 16:39:26

标签: javascript

正如标题所述,在此代码snippit(found here)中附加(0);而非();的目的是什么:

function runner (fns, context, next) {
  var last = fns.length - 1;

  (function run(pos) {
    fns[pos].call(context, function (err) {
      if (err || pos === last) return next(err);
      run(++pos);
    });
  })(0);
}

2 个答案:

答案 0 :(得分:5)

大致相当于:

function runner (fns, context, next) {
  var last = fns.length - 1;

  function run(pos) {
    fns[pos].call(context, function (err) {
      if (err || pos === last) return next(err);
      run(++pos);
    });
  }

  run(0);
}

0就是传递给run()的{​​{1}}的第一个值 - 与递归pos相同(最好写成run(++pos); })。

答案 1 :(得分:1)

目的是您将0作为值传递给 pos 参数。