纯函数是函数式编程的地基,要求相同输入必得相同输出且无副作用。它提升可测试性、可缓存性、并发安全性,并支持引用透明。

JavaScript 中的函数式编程,不是指用 JavaScript 写 Haskell,而是用一套可预测、易组合、少出错的思维方式来组织函数逻辑。其中最基础、最关键的概念就是纯函数。
纯函数的两个硬性条件
一个函数要被称为纯函数,必须同时满足:
相同输入,永远返回相同输出——不依赖任何外部变量、全局状态、时间、随机数、DOM 节点等;执行过程没有副作用——不修改传入的参数、不改变全局变量、不调用 console.log / alert / fetch / DOM 操作等可观察的外部行为。
纯函数长什么样
✅ 正确示例:
const add = (a, b) => a + b;const square = x => x * x;const isValidEmail = email => /^[^s@]+@[^s@]+.[^s@]+$/.test(email);
这些函数只看参数,只算结果,不碰外面一寸土地。
立即学习“Java免费学习笔记(深入)”;
哪些看起来像纯函数,其实不是
❌ 常见反例:
let taxRate = 0.1; const calcTax = price => price * taxRate; → 依赖外部变量,taxRate 变了结果就变;const pushItem = (arr, item) => { arr.push(item); return arr; }; → 修改了原数组,破坏了输入;const logAndDouble = x => { console.log(x); return x * 2; }; → 控制台输出是可观察副作用;const now = () => new Date(); → 每次调用时间不同,输出必然不同。
为什么纯函数重要
它带来的实际好处很实在:
可测试性强:给定输入,断言输出即可,不用 mock 全局状态或网络;可缓存(memoize):结果确定,可以安全地记下来,避免重复计算;可并行/并发安全:不改共享状态,多线程或异步调用也不打架;支持引用透明(Referential Transparency):代码中任意一处调用 add(2, 3),都可以直接替换成 5,程序行为不变。
基本上就这些。纯函数不是银弹,但它是函数式编程的地基——不复杂,但容易忽略。
以上就是JavaScript中什么是函数式编程_纯函数概念的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1542669.html
微信扫一扫
支付宝扫一扫