javascript - 简单来说,thunk 和高阶函数有什么区别?

标签 javascript redux functional-programming higher-order-functions thunk

我理解的都是返回函数的函数。

到目前为止,我使用 thunk 的经验是使用它们返回函数,而不仅仅是操作对象,这样我就可以在 Redux 中处理异步请求。

闭包是高阶函数 (HOF) 的实现,目的是为私有(private)变量创建一个新的作用域……对吗? HOF 的其他示例包括 mapreducefilter

还有什么东西可以明确定义两者之间的区别吗?

谢谢。

最佳答案

I understand that both are functions that return functions

你的理解有点不对

  • Thunks可以返回任何类型的值——不仅仅是函数类型
  • Higher-order functions可以返回任何类型的值——不仅仅是函数类型

My experience so far with thunks have been using them to return functions as opposed to just action objects so that I can work with async requests in Redux.

Thunk(和高阶函数,就此而言)与任何特定的库(React、Redux)或任何特定的控制流(同步、异步)没有本质上的关联。 thunk 只是一个空函数——它们有各种常见的用例,但最常用于延迟特定计算的评估。

A closure is an implementation of a High Order Function (HOF) in order to create a new scope for private variables...right? Other examples of HOFs include map, reduce and filter.

A closure不一定是高阶函数的实现。 function 关键字(和 => 箭头函数语法)确实创建了一个闭包,但它确实有一个新的(词法)作用域,是的。

Is there any thing else that explicitly defines a difference between the two?

是的。它们的相同之处:

  • 它们都是函数
  • 它们都可以返回任何类型的值

它们有何不同:

  • thunk 是空函数(它们不接受任何参数)
  • 高阶函数接受一个函数作为参数和/或返回一个函数

也许是最关键的区别:

  • 如果一个 thunk 返回一个函数,它只能被认为是一个高阶函数。

关于javascript - 简单来说,thunk 和高阶函数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45145221/

相关文章:

javascript - jquery slick 轮播复制/粘贴

javascript - 如何制作顺序步进 slider ?

javascript - 在 JavaScript 中将 HTML 代码存储在字符串中

javascript - Firestore 更新集合中的所有文档

javascript - 为什么 Redux 中间件定义为三个箭头函数,而不是一个带有三个参数的函数?

html - Haskell - Parsec 解析 <p> 元素

java - "Unwrap"在 Java 流(或并行流)中返回之前 Optional.empty 的可选

javascript - 如何修复 Ajax 图像上传 - 返回的响应是 HTML 而不是图像

reactjs - Typescript 找不到导入类型 Action

javascript - 重构 if else 语句以使用 Ramda.js 并将键值对分解为对象记录