【JavaScript】面试手撕柯里化函数
柯里化是函数式编程中的一个概念,它指的是将接受多个参数的函数转换成一个新函数,该新函数接受一个参数,返回一个接受剩余参数的新函数。
以下是一个简单的JavaScript柯里化函数的例子:
function curry(fn) {
return function curried(...args) {
if (args.length >= fn.length) {
return fn.apply(this, args);
} else {
return function(...moreArgs) {
return curried.apply(this, args.concat(moreArgs));
};
}
};
}
// 使用 curry 函数的例子
function add(a, b, c) {
return a + b + c;
}
const curriedAdd = curry(add);
const addOne = curriedAdd(1);
const addOneTwo = addOne(2);
console.log(addOneTwo(3)); // 输出: 6
console.log(curriedAdd(1, 2, 3)); // 输出: 6
在这个例子中,curry
函数通过闭包封装了参数,当传入的参数个数达到原函数需要的参数个数时,就会调用原函数并返回结果,否则返回一个新的函数,该函数可以接受剩余的参数。这样就实现了函数的柯里化。
评论已关闭