如何使chain
使用扩展参数(...chain
)而不是数组?
let newData,
newArgs,
chain = function (data, myargs) {
if (myargs.length === 0) {
return;
}
newData = myargs[0](data);
myargs.splice(0, 1);
newArgs = myargs;
// newargs === array
chain(newData, newArgs);
},
add1 = (num) => {
return num + 1;
};
当我调用该函数时,必须这样做:
chain(5, [add1, add1, add1])
。但我想要:
chain(5, add1, add1, add1)
问题是,在第一次调用函数后,
newArgs
(递归内部的函数参数)将转换为数组。https://jsfiddle.net/btx5sfwh/
最佳答案
您可能要使用rest arguments,然后在递归调用函数时使用spread数组
let newData,
newArgs,
chain = (data, ...myargs) => {
if (myargs.length === 0) {
return data;
} else {
newData = myargs[0](data);
myargs.splice(0, 1);
newArgs = myargs;
chain(newData, ...newArgs);
}
},
add1 = (num) => {
return num + 1;
};
chain(5, add1, add1, add1);
console.log(newData); // 8