Skip to content

函数式编程在前端里指什么? ​

函数式编程把计算写成纯函数的组合:同样的输入永远得到同样的输出,不改外部状态。前端用它来写数据转换;界面和请求本身有副作用,要把副作用推到边缘。

原理 ​

纯函数不依赖、也不修改函数外面的变量。map、filter、reduce 是典型的组合方式。不可变数据用新对象表达变化,旧数据还能被别的视图继续用。

好处是容易测试和推断。代价是简单更新也可能复制对象,极端追求不可变会多写样板。React 的状态更新鼓励不可变,不是要求整个项目拒绝副作用。

柯里化把多参数函数变成一串单参数函数,方便固定一部分配置。只要项目里真有重复的部分应用,再抽这层。

追问 ​

和面向对象怎么选?

对象适合封住一组会变的状态和行为。列表转换、校验、价格计算更适合纯函数。一个组件里可以两种都有:状态放对象或 hook,计算抽成纯函数。

副作用放哪?

读接口、写 DOM、打日志留在调用纯函数的那一层。纯函数返回描述结果的数据,调用方决定要不要执行。

易错点 ​

  • 纯函数内部如果改了传入的对象,外面的状态就脏了。
  • 把所有循环都改成链式 map,中间数组很多,热点路径要看测量。
  • 「函数式」不是禁用 class。看的是有没有不必要的共享可变状态。

相关 ​