2016-12-13 8 views
1

Функцию факт определяются найти факториал в продолжении проходящего стиля,Понимания этого продолжения проходящего стилю

function fact(n,myFun) 
    { 
     if(n==1) 
     myFun(1); 
     else 
     fact(n-1,function inner(t0){ myFun(n*t0) }); 
    } 

вызывается,

fact(4, function outer(k) { console.log(k); }); 

Вот после того, как с помощью контрольных точек Я понимаю, что после того, как мы называем эта функция выполняется программой

n = 4, факт (4, внешний), затем

п = 4, то, (3, внутренний (t0)), то

п = 3, то, (2, внутренний (t0)), то

п = 2, то, (1, внутренний (t0)), а затем

myFun (1)

Я имею понимание тревоги после того, как 1-значение из myFun (1) передается на t0

+2

Поскольку 'myFun' является' inner' предыдущего вызова? – Bergi

+0

@ Bergi: hah, гораздо более краткий ответ, чем тот, который я писал :) –

ответ

1

Вы можете проверить, Что произойдет, если вы также регистрируете функцию.

function fact(n, myFun) { 
 
    console.log(n, myFun); 
 
    if (n == 1) { 
 
     myFun(1); 
 
    } else { 
 
     fact(n - 1, function inner(t0) { 
 
      console.log(n, t0); 
 
      myFun(n * t0); 
 
     }); 
 
    } 
 
} 
 

 
fact(4, function (v) { console.log(v); return v; });
.as-console-wrapper { max-height: 100% !important; top: 0; }

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

  • Нет связанных вопросов^_^