0
所以我想写一个简单的工厂函数,返回一个函数,接受回调。为什么n减少?
这个回调function (func, n)
需要2个参数,第一个功能,第二个参数。
它所要做的就是每次调用func
递增n
。
func
是函数表达式shell
,即调用回调并返回结果n
。
在console.log
中,b4
表示调用回调之前,而after
表示之后。
我很困惑的是,为什么after
的输出减少了?
var factory = function (cb) {
var shell = function (n) {
console.log('b4: ' + n);
var rs = 0;
if (n && n < 5) {
rs = cb(shell, n);
console.log('after: ' + n + ' // huh?');
console.log('return rs: ' + rs);
return rs;
}
console.log('return n: ' + n);
return n;
};
return shell;
}
var a = factory(function (func, n) {
return func(n + 1);
});
console.log('a: ' + a(1));
Jsbin:https://jsbin.com/raqiwom/edit?js,console
由于递归,递归调用shell,但每次迭代中的'n'保持不变通过调用 –
打印* b4 *的递归调用在*之后打印*之前,所以您看到* b4 *计数然后*在每次递归调用返回时倒计时。 – RobG