2015-01-16 4 views
0

Как видно из названия государств, что цель добавления (0);, а не просто (); в этом коде 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); 
} 
+1

Поскольку функция принимает аргумент. '' 'Передается для' pos'. – forgivenson

+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() в качестве первого значения pos - такие же, как и в рекурсивный run(++pos); (что было бы лучше записать в виде run(pos + 1)).

+0

Спасибо, теперь это имеет смысл. Очень признателен! – NotJustClarkKent

1

Цель состоит в том, что вы передаете 0 как значение для поз аргумент.

Смежные вопросы