纯函数指相同输入始终返回相同输出且无副作用的函数,如add(a, b);柯里化是将多参数函数转化为单参数函数链的技术,如curriedMultiply(2)(3)(4),两者提升代码可维护性与复用性。

函数式编程强调使用纯函数和避免共享状态、可变数据以及副作用。在JavaScript中,掌握纯函数与柯里化是理解函数式编程的关键第一步。
什么是纯函数?
一个函数如果满足以下两个条件,就是纯函数:
相同的输入始终返回相同的输出没有副作用(如修改外部变量、发起HTTP请求、操作DOM等)
例如:
function add(a, b) {
return a + b;
}
add(2, 3); // 每次都是5
这个 add 函数是纯函数:它不依赖外部状态,也不会改变任何外部数据。
反例:
let tax = 0.1;
function calculatePrice(price) {
return price * (1 + tax);
}
calculatePrice(100); // 结果依赖外部变量 tax
这个函数不是纯的,因为它的输出受外部变量影响。要让它变纯,应将依赖作为参数传入:
function calculatePrice(price, taxRate) {
return price * (1 + taxRate);
}
calculatePrice(100, 0.1); // 始终返回 110
纯函数的好处
使用纯函数带来多个优势:
易于测试:不需要模拟环境或重置状态可缓存性:可以记忆化(memoize)结果可预测性:行为稳定,便于调试支持并发:无共享状态,适合多线程环境
什么是柯里化(Currying)?
柯里化是把接受多个参数的函数转换成一系列只接受一个参数的函数链的技术。
原始函数:
function multiply(a, b, c) {
return a * b * c;
}
multiply(2, 3, 4); // 24
柯里化版本:
function curriedMultiply(a) {
return function(b) {
return function(c) {
return a * b * c;
};
};
}
curriedMultiply(2)(3)(4); // 24
也可以写成箭头函数形式:
const curriedMultiply = a => b => c => a * b * c;
curriedMultiply(2)(3)(4); // 24
柯里化的实际用途
柯里化能帮助我们创建更灵活、可复用的函数。
比如有一个通用加法函数:
const add = a => b => a + b;
const add5 = add(5);
add5(3); // 8
add5(10); // 15
这里 add(5) 返回了一个新函数,它“记住”了第一个参数。这种技术也称为偏函数应用。
另一个例子:过滤数组中的偶数
const filter = predicate => array => array.filter(predicate);
const isEven = n => n % 2 === 0;
const getEvens = filter(isEven);
getEvens([1, 2, 3, 4, 5, 6]); // [2, 4, 6]
通过柯里化,我们构建出可复用的数据处理函数。
基本上就这些。纯函数让代码更可靠,柯里化让函数更灵活。两者结合,能写出清晰、可维护的函数式代码。不复杂但容易忽略。
以上就是JS函数式编程指南_纯函数与柯里化的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1538857.html
微信扫一扫
支付宝扫一扫