Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 你需要“初始值”做什么_Javascript_Function - Fatal编程技术网

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)
}