你知道什么是纯函数吗?

我知道什么是纯函数。在前端开发(以及其他编程领域)中,纯函数指的是满足以下两个条件的函数:

  1. 对于相同的输入,总是返回相同的输出。 这意味着函数的输出完全由其输入参数决定,而不依赖于任何外部状态或副作用。例如,Math.sqrt(4) 总是返回 2,无论何时何地调用。

  2. 没有副作用。 这意味着函数不会修改任何外部状态,包括全局变量、输入参数(如果参数是对象或数组,不会修改其内容)、I/O 操作(例如,不进行网络请求、不写入文件)等等。它只计算并返回一个值。

以下是一些 JavaScript 中纯函数和非纯函数的例子:

纯函数:

function add(x, y) {
  return x + y;
}

function double(arr) {
  return arr.map(x => x * 2); // 创建一个新数组,不修改原数组
}

非纯函数:

let counter = 0;
function incrementCounter(x) {
  counter += x; // 修改了外部状态
  return counter;
}

function mutateArray(arr) {
  arr.push(1); // 修改了输入参数
}

function getRandomNumber() {
  return Math.random(); // 每次调用返回不同的值
}

function makeAPIRequest(url) {
  // 执行网络请求,有副作用
  fetch(url)
    .then(response => /* ... */);
}

纯函数的优点:

  • 可测试性: 很容易编写单元测试,因为只需要测试输入和输出的对应关系。
  • 可缓存性: 可以缓存函数的输出,因为相同的输入总是产生相同的输出。
  • 可移植性: 纯函数不依赖于外部环境,因此很容易在不同的上下文中复用。
  • 可并行化: 可以并行执行纯函数,因为它们之间没有副作用的干扰。
  • 可推理性: 纯函数的代码更容易理解和推理,因为它们的逻辑更简单直接。

在前端开发中,像 React 这样的框架鼓励使用纯函数来构建组件,以提高代码的可预测性和可维护性。 例如,组件的 render 函数理想情况下应该是纯函数,以便 React 可以有效地进行渲染优化。

posted @   王铁柱6  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示