"use strict"
var avg = function(...n){
   let tot = 0;
   for(let i = 0; i < n.length; i++){
      tot = tot + n[i];
   }

   return tot/n.length;
};

var spice = function(fn, ...n){
   return function(...m){
      return fn.apply(this,n.concat(m));
   }
};

var doAvg = spice(avg, 1,2,3);
console.log(doAvg(4,5,6)); // result is 3.5


我不明白在第11行中对此的用法。这在这里表示什么?为什么我们不能调用fn(n.concat(m))之类的函数呢?我在这里错过明显的东西吗?

最佳答案

Function.prototype.apply
它接受一个参数数组。
如下面的示例所示,使用Math.max代替:

    Math.min(1,2,3,4,5) // which is 1


使用“应用”可以是:

    Math.min.apply(null,[1,2,3,4,5,...])//in case the length of the list varies


优点是,在min的示例中,如果输入的长度不固定,则将apply与输入数组而不是参数列表一起使用会更简洁。

关于javascript - 谁能在下面的示例中解释此用法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50933267/

10-11 13:36