我理解的都是返回函数的函数。
到目前为止,我使用 thunk 的经验是使用它们返回函数,而不仅仅是操作对象,这样我就可以在 Redux
中处理异步请求。
闭包是高阶函数 (HOF) 的实现,目的是为私有(private)变量创建一个新的作用域……对吗? HOF 的其他示例包括 map
、reduce
和 filter
。
还有什么东西可以明确定义两者之间的区别吗?
谢谢。
最佳答案
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/