纯函数(Pure Function)概念
纯函数是函数式编程中的核心概念,满足以下两个条件:
- 确定性:相同的输入 永远得到相同的输出,不依赖外部状态或随机性。
-
无副作用:不会修改外部变量、参数、I/O设备或全局状态(如网络请求、文件操作等)。
-
纯函数的特性包括可缓存性、 可测试性和 线程安全性,是构建可靠程序的重要基础。
纯函数示例与对比:
✅ 纯函数示例 :
- 数学运算:
function add(a, b) {
return a + b;
}
// 输入 (2,3) 永远返回 5
JavaScript
- 数组操作(不修改原数组) :
function appendElement(arr, element) {
return [...arr, element]; // 返回新数组,原数组不变
}
JavaScript
- 对象属性提取:
def get_name(user):
return user["name"] # 不修改输入对象
Python
—-
❌ 非纯函数示例 :
- 依赖外部变量:
let count = 0;
function increment() {
count++; // 修改外部变量,副作用!
return count;
}
JavaScript
- 随机性输出:
import random
def roll_dice():
return random.randint(1,6) # 输出不固定
Python
- 修改输入参数:
function updateUser(user) {
user.age = 30; // 直接修改输入对象
return user;
}
JavaScript
—-
为什么需要纯函数?
- 可预测性:输入与输出关系明确,调试更简单。
- 可缓存:可对结果缓存(如
memoization),提升性能。
- 并行安全:无共享状态,避免竞态条件(Race Conditions)。
通过避免副作用,纯函数使代码更模块化、可维护性更高,是函数式编程的基石。