Javascript 你需要“初始值”做什么
我看到了这个功能:Javascript 你需要“初始值”做什么,javascript,function,Javascript,Function,我看到了这个功能: function reduce(arr, fn, initial) { return (function step(idx, value) { if(idx > arr.length - 1) return value; return step(idx + 1, fn(value, arr[idx], idx, arr)) })(0, initial) } module.exports = reduce 0,init
function reduce(arr, fn, initial) {
return (function step(idx, value) {
if(idx > arr.length - 1)
return value;
return step(idx + 1, fn(value, arr[idx], idx, arr))
})(0, initial)
}
module.exports = reduce
0,inital代表什么。0,initial第一次触发step函数,将0作为idx传递,将initial reduce的参数作为值传递。然后,该步骤继续调用自身,直到完成工作
如果我们将命名函数表达式(此处没有任何用途)分解出来,会更清楚:
function reduce(arr, fn, initial) {
// Define the step function:
function step(idx, value) {
if (idx > arr.length - 1)
return value;
return step(idx + 1, fn(value, arr[idx], idx, arr))
}
// Call it to start the process, return the final result it returns:
return step((0, initial)
}