微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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则不需要 – 它只需要开始执行.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐