JS 中的柯里化
用 JavaScript 做饭?啥?🤷♂️
挑战
下一级别
用 JavaScript 做饭?啥?🤷♂️
柯里化是一种技术,其中一个函数接受多个参数作为输入,并返回一个只有一个参数的函数。
柯里化是函数式编程中的一个基本工具,它是一种编程模式,试图通过使用不可变数据和纯函数(无副作用)来最大限度地减少程序状态的改变次数(称为副作用)。
现在,让我们切入正题。检查以下代码示例:
const isDivisible = (divider, number) => !(number % divider);
const divider = 2;
console.log(isDivisible(divider, 40)); // true
console.log(isDivisible(divider, 33)); // false
在上面的代码中,isDivisible
是一个函数表达式,用于检查一个数字是否可以被另一个数字整除,返回true或false,就这么简单。
如果我在这三次isDivisible
调用中的意图是使用相同的除数,那么每次我想知道一个数字是否可以被二整除时都必须将除数作为参数传递,这不是很繁琐和乏味吗?
只需修改isDivisible
函数,并将除数设为固定值即可。
但这会产生巨大的耦合,影响不可复用且完全强制转换的函数。
现在轮到我们的游戏明星登场了
柯里化🤓
const isDivisible = divider => number => !(number % divider);
console.log(isDivisible(2)(40)); // true
console.log(isDivisible(2)(33)); // false
console.log(isDivisible(3)(40)); // false
console.log(isDivisible(3)(33)); // true

因此,现在我们有一个解耦且灵活的函数,它不仅依赖于数字 2,而且可以在任何我们想知道数字是否可整除的情况下使用🧐
🍻
文章来源:https://dev.to/wakeupmh/currying-in-js-3k7d