副作用操作是什么

本人github

在编程中,“副作用”(Side Effect)是一个术语,指的是函数或表达式在计算结果以外对外部世界产生的影响。换句话说,如果一个函数除了返回一个值之外,还修改了系统的状态,或者具有可观察的交互(例如,修改全局变量,改变输出设备的状态,或者与数据库或网络进行交互等),那么我们就说这个函数具有副作用。

以下是一些常见的副作用:

  1. 改变全局变量或数据结构:如果一个函数修改了一个全局变量或者一个参数的状态,那么它就具有副作用。

  2. 写入数据库或读取数据库:数据库操作会改变数据库的状态,因此具有副作用。

  3. 网络请求:发送 HTTP 请求或者 WebSocket 消息等网络操作会改变网络的状态,因此具有副作用。

  4. 改变文件系统:读写文件会改变文件系统的状态,因此具有副作用。

  5. 直接操作 DOM:在浏览器环境中,直接操作 DOM 会改变页面的状态,因此具有副作用。

在函数式编程中,我们通常倾向于避免副作用,因为它们会使得程序的行为变得难以预测和理解。然而,在实际的应用程序中,副作用通常是必不可少的,例如,我们需要通过网络请求来获取数据,需要通过修改 DOM 来更新 UI 等。因此,关键是如何在保持代码的可读性和可维护性的同时,合理地管理和控制副作用。在 React 中,我们通常使用生命周期方法或者钩子(如 useEffect)来处理副作用。