定义函数事实以找到连续传递风格的阶乘,
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,事实(3,内部(T0)),然后
N= 3,事实(2,内部(T0)),然后
N= 2,事实(1,内部(T0)),然后
myFun(1)
在此之后,我很难理解,myFun(1)中的1值是如何传递给t0的
发布于 2016-12-13 16:22:25
你可以检查发生了什么,如果你也记录这个函数的话。
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; }
https://stackoverflow.com/questions/41116089
复制相似问题