这个js片段是如何工作的

How does this js snippet work?

本文关键字:工作 何工作 js 片段 这个      更新时间:2023-09-26
function thunkify(fn) {
    var args = [].slice.call( arguments, 1 );
    return function(cb) {
        args.push( cb );
        return fn.apply( null, args );
    };
}

因此CCD_ 1返回Array对象。则CCD_ 2创建一个新的数组,其中参数的内容从1开始(如果我是对的(。

但是函数(cb(是如何工作的呢?你在哪里拿到cb?

function(cb) { ... }创建一个函数。

cb是传递给它的参数。

当函数被调用时,就会得到它。

var thunkified = thunkify(someFunction);
thunkified("the value of cb");

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