当前位置: 首页 > news >正文

JavaScript 什么是纯函数,有哪些常见的纯函数

什么是纯函数

纯函数是指那些不依赖于外部状态,也不改变外部状态的函数。在JavaScript中,纯函数的返回值仅由其输入参数决定,而且执行纯函数不会产生副作用,比如修改全局变量或修改传入的参数。

常见的纯函数

JavaScript中一些常见的自带纯函数包括:

1.Math.abs:返回参数的绝对值。

2.Math.min 和 Math.max:分别返回一组数中的最小值和最大值。

3.Math.round:四舍五入。

4.Math.floor 和 Math.ceil:分别向下和向上取整。

5.Array.prototype.slice:不改变原数组,返回一个新数组。

6.String.prototype.toUpperCase 和 String.prototype.toLowerCase:转换字符串的大小写。

还有一些对数组的操作方法,可以不修改原数组拿到修改后的数组

1.toSorted(): 这个方法会返回一个新数组,其中的元素是按照升序排列的。它不会改变原数组。

let numbers = [1, 3, 2, 4];
let sortedNumbers = numbers.toSorted();
console.log(sortedNumbers); // 输出: [1, 2, 3, 4]
console.log(numbers); // 输出: [1, 3, 2, 4],原数组不变

2.toReversed(): 这个方法会返回一个新数组,其中的元素顺序与原数组相反。它不会改变原数组。

let numbers = [1, 3, 2, 4];
let reversedNumbers = numbers.toReversed();
console.log(reversedNumbers); // 输出: [4, 2, 3, 1]
console.log(numbers); // 输出: [1, 3, 2, 4],原数组不变

3.toSpliced(): 这个方法会返回一个新数组,它会从原数组中移除指定数量的元素,并在指定位置插入新的元素。它不会改变原数组。

let numbers = [1, 2, 3, 4, 5];
let splicedNumbers = numbers.toSpliced(1, 2, 'a', 'b');
console.log(splicedNumbers); // 输出: [1, 'a', 'b', 5]
console.log(numbers); // 输出: [1, 2, 3, 4, 5],原数组不变

判断是否是纯函数

判断一个函数是否是纯函数,你可以根据以下两个标准:

1.相同的输入总是得到相同的输出:无论何时何地,只要给定相同的输入参数,纯函数总是返回相同的结果。

2.不产生副作用:纯函数在执行过程中不会改变任何外部状态,也就是说,它不会修改任何全局变量、传入的参数或者其他任何外部状态。

如果一个函数满足这两个条件,那么它就是一个纯函数。在实际编程中,纯函数通常更容易理解和测试,因为它们的行为不依赖于任何外部环境。

http://www.lryc.cn/news/322057.html

相关文章:

  • c++ 指针大小
  • IBM SPSS Statistics:提升数据处理效率的利器
  • is ignored, because it exists, maybe from xml file
  • Spark面试整理-Spark是什么?
  • Android 13.0 开机启动优化之PMS扫描apk耗时相关功能优化
  • 云蜜罐技术(德迅猎鹰)诞生
  • ARM:汇编点灯
  • 69: 偷菜时间表(python)
  • 【计算机视觉】三、图像处理——实验:图像去模糊和去噪、提取边缘特征
  • 用css滤镜做颜色不同的数据卡片(背景图对于css滤镜的使用)
  • 2024年第六届区块链与物联网国际会议(BIOTC 2024)即将召开!
  • Django动态路由实例
  • 基于Vue.js和D3.js的智能停车可视化系统
  • 数据之王国:解析Facebook的大数据应用
  • 前端小白的学习之路(ES6 一)
  • Linux CentOS 7.6安装Redis 6.2.6 详细保姆级教程
  • Android 优化 - 数据结构
  • Linux环境开发工具之vim
  • 「Linux系列」Shell介绍及起步
  • 用pdf2docx将PDF转换成word文档
  • STM32U5 ADC 自校准不成功的问题分析
  • 使用光标精灵更换电脑鼠标光标样式,一键安装使用
  • 微服务day04(上)-- RabbitMQ学习与入门
  • Halcon 3D 平面拟合(区域采样、Z值过滤、平面拟合、平面移动)
  • npm 插件 中 版本号为 星号 是什么意思
  • Codeforces\ Round\ 930(C.Bitwise Operation Wizard)
  • 监控系统prometheus+grafana+发送告警信息
  • IoT 物联网场景中如何应对安全风险?——青创智通
  • 滴滴基于 Clickhouse 构建新一代日志存储系统
  • 虚拟主机去除index.php目录地址