函数式编程范式(Functional Programming,简称 FP)是一种以函数为核心的编程范式,它将计算视为数学函数的求值,强调纯函数、不可变数据和无副作用,避免使用可变状态和命令式控制流。
函数式编程范式(Functional Programming,简称 FP)是一种以函数为核心的编程范式,它将计算视为数学函数的求值,强调纯函数、不可变数据和无副作用,避免使用可变状态和命令式控制流。
-
函数是一等公民
函数可以像其他数据类型(如数字、字符串)一样被传递、赋值给变量、作为参数传入其他函数或作为返回值,这是函数式编程的基础。
-
纯函数(Pure Functions)
- 相同输入始终返回相同输出(确定性)
- 不修改外部状态或产生副作用(如修改全局变量、IO 操作)
-
不可变数据(Immutability)
数据一旦创建就不能被修改,任何修改都会产生新的数据副本。这避免了意外的状态变更,简化了并发和调试。
-
避免副作用(Side Effects)
副作用指函数执行时对外部环境的改变(如修改全局变量、网络请求、打印日志)。函数式编程通过隔离副作用(如将 IO 操作放在专门的代码块)来提高可预测性。
-
声明式编程(Declarative)
关注 “做什么” 而非 “怎么做”,通过组合函数描述逻辑,而非编写步骤式命令。
6.** 函数组合与高阶函数 **- 高阶函数:接收或返回其他函数的函数(如map
、filter
)。
- 函数组合:将多个简单函数组合成复杂函数,类似数学中的函数复合(
f(g(x))
)。
// 函数组合
const compose = <A, B, C>(f: (b: B) => C, g: (a: A) => B) => (a: A) => f(g(a));
const add1 = (x: number) => x + 1;
const double = (x: number) => x * 2;
const add1ThenDouble = compose(double, add1);
add1ThenDouble(3); // 8(先3+1=4,再4*2=8)
-** 可预测性 :纯函数和不可变数据减少了状态变更导致的意外行为。
- 可测试性 :纯函数无需依赖外部环境,测试更简单。
- 可维护性 :声明式代码更简洁,逻辑意图更清晰。
- 并发安全性 **:无状态设计天然适合多线程 / 分布式系统。
函数式编程在前端(如 React、Redux)和后端(如 Scala、Elixir)都有广泛应用,TypeScript 也通过类型系统良好地支持了函数式范式的实践。