javascript – thunk和闭包之间的区别

前端之家收集整理的这篇文章主要介绍了javascript – thunk和闭包之间的区别前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我以为我知道什么是关闭,但我不太确定阅读一些文章反应.

功能是否低于“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则不需要 – 它只需要开始执行.

猜你在找的JavaScript相关文章