被这个高级柯里化函数弄糊涂了,它是如何工作的?

问题描述 投票:0回答:0

我一直在学习柯里化函数,我理解了我阅读的基本示例,但是我真的很想理解这个给出了高级函数的示例,但我发现它很混乱,如果有人可以帮助打破它下来会很棒,我知道

curry
接受一个函数,然后这个函数的参数被收集到一个带有
...args
的数组中,但我不确定之后的逻辑或它是如何工作的。

我还想知道

(...args)
的价值是多少,它来自哪里?以及函数再次绑定到 args 的行发生了什么。

const curry = (fn) => {
  return curried = (...args) => {
    if (fn.length !== args.length) {
      return curried.bind(null, ...args)
    }
    return fn(...args);
  };
}
const totalNum = (x, y, z) => {
  return x + y + z
}
const curriedTotal = curry(totalNum);
console.log(curriedTotal(10)(20)(30));

javascript function currying
© www.soinside.com 2019 - 2024. All rights reserved.