贝利信息

什么是javascript函数式编程_纯函数和副作用如何管理

日期:2025-12-27 00:00 / 作者:幻影之瞳
JavaScript函数式编程核心是多用纯函数和管住副作用:纯函数要求相同输入必得相同输出且不产生外部影响;副作用需隔离显式处理,如将DOM操作、网络请求等抽离为独立函数,并在Domain层专注纯计算,Service层封装副作用,UI层触发执行。

JavaScript函数式编程不是写一堆匿名函数,而是用一种更可预测、更易测试、更少出错的方式组织逻辑。核心就两点:多用纯函数,管住副作用。

纯函数:输入决定输出,不碰外面的事

一个函数只要满足两个条件,就是纯函数:

Array.prototype.slice() 是纯的——原数组不动,只返回新数组;而 splice() 不是——它直接把原数组切没了。又比如这个函数:

const formatPrice = (price) => `$${(price * 1.1).toFixed(2)}`;

它只依赖参数,不查全局变量、不改传进来的 price(哪怕 price 是对象,它也没动),这就是典型的纯函数。

副作用:所有“对外动手”的行为

副作用不是 bug,而是函数执行时对函数外部产生的可观测影响,常见包括:

这些操作本身必要,但混在计算逻辑里会让函数变得不可靠、难复现、难测试。

管理副作用的关键:隔离 + 显式化

你不需要消灭所有副作用,而是让它们不再偷偷摸摸发生:

实际协作中的分层建议

一个典型页面逻辑可以这样拆:

这样,90% 的逻辑是纯的、可离线测试;10% 的副作用被框定在明确位置,改起来放心,查起来清楚。