优秀的编程知识分享平台

网站首页 > 技术文章 正文

JavaScript面试题6-写一个柯里化函数

nanyue 2024-09-01 20:28:54 技术文章 3 ℃

柯里化(Currying)是一种函数式编程技术,它将一个接受多个参数的函数转换为一系列接受单一参数的函数。柯里化的主要目的是让函数更易于复用和组合,同时也可以用于创建可配置的函数和简化代码。柯里化的用途包括提高函数的复用性、实现函数组合、延迟计算等。使用场景包括数据处理、配置和选项设置、事件处理等。

上代码:

/**
 * 柯里化函数
 * @param {Function} fn
 * @param {*} bindArgs
 * @return {Function} 
 */
function currying(fn, ...bindArgs){
    // 返回一个函数
    return (...args) => {
        // 合并两个函数的参数
        const allArgs = [...bindArgs, ...args];
        // 判断合并后的参数数量是否等于需要执行函数的参数数量
        if(allArgs.length === fn.length) {
            return fn(...allArgs);
        } else {
            return currying(fn, ...allArgs);
        }
    }
}

// 测试柯里化函数
const sum = (a, b, c, d) => a + b + c + d;

// 测试输出结果:
console.log('柯里化:', currying(sum)()(5)(6)(7)(8)); // 柯里化: 26
console.log('柯里化:', currying(sum, 5)(6)(7)(8)); // 柯里化: 26
console.log('柯里化:', currying(sum, 5, 6)(7, 8)); // 柯里化: 26
console.log('柯里化:', currying(sum, 5, 6, 7)(8)); // 柯里化: 26
最近发表
标签列表