功能是否低于“thunk”?
(对我来说这是一个关闭,我从一篇关于反应https://spin.atomicobject.com/2016/10/05/form-validation-react/的博客文章中得到了这个)
作者解释说:“接下来,让我们看一下ruleRunner函数.regileRunner是一个thunk,或者是一个返回函数的函数.”
export const ruleRunner = (field,name,...validations) => { return (state) => { for (let v of validations) { let errorMessageFunc = v(state[field],state); if (errorMessageFunc) { return {[field]: errorMessageFunc(name)}; } } return null; }; };
相反,我认为thunk是“一个包含所有上下文(状态,函数等)的函数,以便在将来执行某种逻辑.”来自:http://www.austinstory.com/what-is-a-thunk-in-javascript/
const add = (x,y) => x + y; const thunk = () => add(1,2); thunk() // 3
所以对我来说,第一篇文章的作者是错误的,他给出了一个封闭的描述和例子,而不是一个thunk.但我可能错了,这就是我问这个问题的原因.
第一篇文章的作者是错误的是什么是thunk并且说thunk是一种特定的闭包是“正确的”,它包含了为了执行某种类型而需要的所有上下文(状态,函数等)未来的逻辑.“
解决方法
“ruleRunner is a thunk,or a function that returns a function.”
不,那是垃圾.返回函数的函数称为higher-order function.返回的函数通常为closure.
I thought a thunk was “a function that contains all of the context (state,functions,etc) it will need in order to carry out some sort of logic in the future.”
是的,这听起来很合理.这类似于一个闭包,但是一个闭包通常需要一些进一步的参数,而thunk则不需要 – 它只需要开始执行.