Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.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 - Fatal编程技术网

Javascript,阶乘,太难了

Javascript,阶乘,太难了,javascript,Javascript,代码是这样的。 我不能完全理解这个代码。 它看起来像是添加缓存,然后添加缓存 但是这是如何工作的呢? 我们不需要循环来添加缓存吗 另外,返回func 代码比需要的更复杂。缓存阵列未用作缓存;它被用作硬编码的一种方法,0的阶乘是1。递归循环不需要添加到缓存中,但是如果添加了额外的行,那么数组将真正起到缓存的作用,并且它将在后续调用函数时提供性能改进。my CouComputer work wellFact是一个iife立即调用的函数表达式,返回func。因为JavaScript支持第一类函数,所以

代码是这样的。 我不能完全理解这个代码。 它看起来像是添加缓存,然后添加缓存 但是这是如何工作的呢? 我们不需要循环来添加缓存吗


另外,返回func 代码比需要的更复杂。缓存阵列未用作缓存;它被用作硬编码的一种方法,0的阶乘是1。递归循环不需要添加到缓存中,但是如果添加了额外的行,那么数组将真正起到缓存的作用,并且它将在后续调用函数时提供性能改进。

my CouComputer work wellFact是一个iife立即调用的函数表达式,返回func。因为JavaScript支持第一类函数,所以这是可能的。
  var fact = (function(){
  var cache =  {'0': 1};

  var func = function(n){
    var result = 0;
    if(typeof(cache[n]) === 'number'){
      result = cache[n];
    }
    else{
      result = cache[n] = n * func(n-1);
    }
    return result;
  }


  return func;
})();

  console.log(fact(5)); //120