function thunkify(fn) {
var args = [].slice.call( arguments, 1 );
return function(cb) {
args.push( cb );
return fn.apply( null, args );
};
}
所以[]
返回一个Array对象。然后slice.call
创建一个新数组,如果我是对的话,参数的内容从1开始。
但是函数(cb)如何工作?你在哪里得到cb?
答案 0 :(得分:2)
function(cb) { ... }
创建了一个函数。
cb
是传递给它的参数。
调用函数时可以得到它。
var thunkified = thunkify(someFunction);
thunkified("the value of cb");
答案 1 :(得分:2)
args现在是一个包含所有thunkify args的数组(除了你说的第一个)。 那个args数组,比每次调用返回的函数时都得到一个cb函数(这就是闭包,返回的函数可以访问thunkify函数中的args)。
var myfn = thunkify(fn, 1, 2, 3); //now args is [1, 2, 3];
myfn(4); //now args is [1, 2, 3, 4] and fn is called with that array