javascript - 谁能解释一下下面例子中这个的用法吗?

标签 javascript function

"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 行中的 this 的用法。这在这里表示什么?为什么我们不能调用像 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/

相关文章:

c - 为什么模运算符不能在 C 中的 printf 函数中工作?

javascript - NodeJS > req.query 返回不正确的数据

javascript - 根据选择选项显示/隐藏 div 不起作用

javascript - 在函数中动态添加新元素

mysql - 如何将SQL查询变成SQL函数

c++ - 在 C++ 中是否可以定义一个纯虚函数?

javascript - 您如何缩小内部和数组的 promise 功能?

javascript - 如何将网页的部分iframe从服务器A发送到服务器B?

python - 如何通过单击 PyQt 中的按钮将参数传递给函数?

function - Cosmos DB 与 Azure 函数和 SignalR 的集成