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