函数副作用指函数除返回值外对外部环境产生影响,如修改全局变量、操作DOM等。纯函数则保证相同输入始终返回相同输出且无副作用,例如 add(a, b)。使用纯函数可提升测试性、可维护性和代码可预测性。为减少副作用,应采用不可变数据处理、将副作用集中管理、使用高阶函数延迟执行,并优先在工具函数和UI组件中使用纯逻辑,从而让代码更健壮易读。
在JavaScript开发中,函数副作用是影响程序可预测性和可维护性的重要因素。要提升代码质量,理解并管理副作用、尽可能使用纯函数是一种关键实践。
当一个函数除了返回值之外,还对外部环境产生可观察的影响,就称为有副作用。常见的副作用包括:
纯函数满足两个条件:
比如以下函数就是典型的纯函数:
function add(a, b) {
return a + b;
}
它的输出只依赖于输入,不会修改任何外部状态。使用纯函数的好处包括:
虽然无法完全避免副作用(如用户交互、API调用),但我们可以通过策略将它们隔离和控制:
副作用,例如返回一个函数而不是立即调用// 不推荐
function addItem(arr, item) {
arr.push(item);
return arr;
}
// 推荐(纯函数)
function addItem(arr, item) {
return [...arr, item];
}
在项目中推行纯函数理念,可以从以下几个方面入手:
基本上就这些。把副作用关进笼子,让大部分逻辑保持纯净,代码会更健壮、更易推理。