javascript - 有人可以解释一下这个高阶 JavaScript 函数令人困惑的语法吗?

标签 javascript

我正在读《Eloquent JavaScript》这本书。

在第 5 章中,他描述了一个特定的高阶函数。它被称为 noisy() 它打印在下面......

function noisy(f) {
  return (...args) => {
   console.log("calling with", args);
   let result = f(...args);
   console.log("called with", args, ", returned", result);
   return result;
 };
}

这是让我困惑的部分。他按如下方式调用函数 noisy...

noisy(Math.min)(3,2,1);

我不明白为什么要这样调用该函数。为什么不这么称呼...

noisy(Math.Min(3,2,1))

编辑:我现在明白发生了什么。 Simone 在下面对此进行了解释。

noisy(Math.min)(3,2,1) is equivalent to (noisy(Math.min))(3,2,1).

最佳答案

如果您尝试获取noisy类型,您将得到:

typeof noisy
>> "function"

如果您询问 noisy(Math.min) 的类型,也会得到同样的结果:

typeof noisy(Math.min)
>> "function"

如果您愿意,还可以将此函数存储到变量中:

const noisyFunction = noisy(Math.min)

这样你就可以像常规函数一样调用它:

noisyFunction(1,2,3)

noisy(Math.min)(3,2,1) 完全相同,只是以不同的、更短的方式编写。要点是,高阶函数只是一个返回函数的函数。

关于javascript - 有人可以解释一下这个高阶 JavaScript 函数令人困惑的语法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50003830/

相关文章:

javascript - 如何在 Amazon Beanstalk 和 Tomcat 上启用 HTML/JavaScript/CSS 的 gzip

javascript - 在 pos Odoo-8 中创建收据

javascript - html中pdf元素的滚动条样式

javascript - 在 dojo 中显示 Json 数据

javascript - 使用 css 遇到一些字符后转到新行

javascript - AngularJS ng-click不在范围内调用函数

javascript - 如何从返回的复杂响应中获取 url?

javascript - 如何将 javascript 内联代码转换为 jQuery?

javascript - 在 ReactJs 组件方法调用之间存储变量

javascript - ReactJS 单击并按住按钮