函数柯里化
函数柯里化
函数柯里化用于将一个多参函数转换为多个单参函数的组合,使得函数变得> 更加灵活、更易用、更加模块化,从而提高代码的可读性和可维护性。 以下是柯里化常见的使用场景: 1.参数复用 当一个函数输入的参数比较多,而且有一些参数需要在不同的地方复用时,> 柯里化可以帮助我们将那些要复用的参数进行缓存,避免重复输入该参数。> 这样可以减少代码所需的参数数量,从而提高代码的可读性。 2. 延迟执行 柯里化函数可以将多个参数的函数拆分成多个单个参数的函数,在调用柯里> 化函数时,只需要提供部分参数,此时返回该函数的一个新的柯里化函数。> 当准备好所有参数后,再一次性地调用这个柯里化函数,从而达到延迟执行> 的效果。 3. 预处理数据 柯里化函数可以用来对数据进行一些辅助计算,预处理数据以便于后续的函> 数调用。这样可以使得我们的代码更加清晰和模块化。 4. 代码复用 柯里化可以避免编写相似代码的复制粘贴,因为我们只需要对共性代码进行> 柯里化封装,然后提供不同的参数从而达到复用代码的效果。
function curry(fn) {
return function curried(...args) {
if (args.length >= fn.length) {
return fn.apply(this, args)
} else {
return function (...args2) {
return curried.apply(this, args.concat(args2))
}
}
}
}
function fn1(a, b, c) {
return a + b + c
}
let fn2 = curry(fn1)
let res = fn2(1)(2)(3)
// console.log(res) // 6