js:偏函数Partial和柯里化Currying

简介: js:偏函数Partial和柯里化Currying

-

定义

区别

偏函数 (Partial application)

在计算机科学中,局部应用是指固定一个函数的一些参数,然后产生另一个更小元的函数。(什么是元?元是指函数参数的个数,比如一个带有两个参数的函数被称为二元函数。)

局部应用则是固定一个函数的一个或者多个参数,也就是将一个 n 元函数转换成一个 n - x 元函数。

柯里化 (Currying)

在数学和计算机科学中,柯里化是一种将使用多个参数的一个函数转换成一系列使用一个参数的函数的技术。

柯里化是将一个多参数函数转换成多个单参数函数,也就是将一个 n 元函数转换成 n 个一元函数。

 原函数

function add(a, b, c) {
  return a + b + c;
}
console.log(add(1, 2, 3)); // 6

偏函数

function add(a) {
  return function (b, c) {
    return a + b + c;
  };
}
console.log(add(1)(2, 3)); // 6

柯里化

function add(a) {
  return function (b) {
    return function (c) {
      return a + b + c;
    };
  };
}
console.log(add(1)(2)(3)); // 6
// 偏函数
function partial(func, ...presetArgs) {
  return function (...args) {
    return func.call(this, ...presetArgs, ...args);
  };
}
const partialAdd = partial(add, 1);
console.log(partialAdd(2, 3)); // 6
// 柯里化
function curry(func, ...presetArgs) {
  return function (...args) {
    const allArgs = [...presetArgs, ...args];
    if (allArgs.length >= func.length) {
      // 如果参数大于等于函数参数,那么允许函数提供全部参数被正常调用
      return func.apply(this, allArgs);
    } else {
      // 提供参数小于函数参数,返回偏函数
      return curry.call(null, func, ...allArgs);
    }
  };
}
const curryAdd = curry(add);
console.log(curryAdd(1)(2)(3));

参考

理解JS里的偏函数与柯里化

彻底搞懂闭包,柯里化,手写代码,金九银十不再丢分!

相关文章
|
3月前
|
存储 JavaScript 前端开发
JavaScript函数柯里化
JavaScript函数柯里化
|
6月前
|
设计模式 JSON 前端开发
前端面试必看(手写Promise+js设计模式+继承+函数柯里化等)JavaScript面试全通关(1/3)
前端面试必看(手写Promise+js设计模式+继承+函数柯里化等)JavaScript面试全通关(1/3)
42 0
|
Web App开发 缓存 前端开发
✨从柯里化讲起,一网打尽 JavaScript 重要的高阶函数
✨从柯里化讲起,一网打尽 JavaScript 重要的高阶函数
|
JavaScript 前端开发
JavaScript函数柯里化的实现原理,进来教你完成一个自己的自动实现柯里化方法
JavaScript函数柯里化的实现原理,进来教你完成一个自己的自动实现柯里化方法
167 0
|
JavaScript 前端开发
【JavaScript】函数式编程——函数柯里化
【JavaScript】函数式编程——函数柯里化
91 0
|
JavaScript
JS查漏补缺——柯里化
JS查漏补缺系列是我在学习JS高级语法时做的笔记,通过实践费曼学习法进一步加深自己对其的理解,也希望别人能通过我的笔记能学习到相关的知识点。这一次我们来了解柯里化
77 0
|
JavaScript
js:偏函数Partial和柯里化Currying
js:偏函数Partial和柯里化Currying
js:偏函数Partial和柯里化Currying
|
JavaScript 程序员
玩转JS基础——函数柯里化
在计算机科学中,柯里化(英语:Currying),又译为卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。
135 0
|
JavaScript 前端开发 Unix
【函数式编程】基于JS进行函数式编程(三)柯里化 | 偏函数 | 组合与管道
【函数式编程】基于JS进行函数式编程(三)柯里化 | 偏函数 | 组合与管道
161 0
【函数式编程】基于JS进行函数式编程(三)柯里化 | 偏函数 | 组合与管道
|
2月前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
27 0