定义函数事实以找到连续传递样式中的阶乘,
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,外部),则
n = 4,fact(3,inner(t0)),然后
n = 3,事实(2,内部(t0)),然后
n = 2,fact(1,inner(t0))然后
myFun(1)
我在此之后很难理解,如何将myFun(1)的1值传递给t0
最佳答案
如果您也记录该功能,则可以检查发生了什么。
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; }
关于javascript - 了解这种延续传递方式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41116089/