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.mzph.cn/news/758002.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

理论学习:深度学习里什么是置信度

什么是置信度 在深度学习中,置信度通常指的是模型对其预测结果的确信程度。这种概念在分类问题中尤其常见,其中模型会为每个类别分配一个概率值,这个值表示模型认为输入数据属于该类别的可能性有多大。置信度是模型输出的一部分,…

c++带符号的大整数计算器

定制魏:QTWZPW,获取更多源码等 目录 题目 要求 类声明 构造函数 核心算法实现说明 总体设计 测试与结论 加法测试 减法测试 乘法测试 除法测试 总结 完整代码 题目 为带符号大整数定义一个类。 将带符号大整数表示成两个值:一个是绝对值,用无符号大整数表示,一…

基于python的变配电室运行状态评估与预警系统flask-django-nodejs-php

近年来,随着我国工业化、城镇化步伐的不断加快,城市配电网络取得令人瞩目的发展成果。变配电室是供配电系统的核心,在供配电系统中占有特殊的重要地位[1]。变配电室电气设备运行状态和环境信息缺乏必要的监测评估预警手段,如有一日遭遇突发情…

OpenGL学习笔记【1】——简介

一、OpenGL概念 OpenGL (Open Graphics Library,译名:开放式图形库开放式图形库) 是一种用于渲染 2D 和 3D 图形的跨语言、跨平台的编程接口(API)。 二、OpenGL跨语言 OpenGL 是一个 C 语言库,因此理解 C 语言(或 C)的…

Linux-线程同步

文章目录 前言一、为什么要线程同步?二、线程同步pthread_cond_initpthread_cond_destroypthread_cond_wait、pthread_cond_signal和 pthread_cond_broadcast 三、示例代码 前言 上节课学习了线程互斥,这节课针对线程互斥内容在做进一步的补充和完善&am…

【Python 48小时速成 3】输入与输出

在 Python 中,输入和输出通常通过内置函数来实现。主要的输入函数是 input(),用于从用户获取输入,而输出函数则是 print(),用于将结果打印到控制台。以下是简单的代码示例演示了输入和输出: # 输入示例 name input(&…

[C语言]一维数组二维数组的大小

对于一维数组我们知道取地址是取首元素的地址,二维数组呢,地址是取第一行的地址,sizeof(数组名)这里计算的就是整个数组的大小,&数组名 表示整个数组,取出的是整个数组的地址,显示的是数组的首元素 记…

网络工程师练习题2

网络工程师 将专用IP地址转换为公用IP地址的技术是()。 A.ARPB.DHCPC.UTMD.NAT 【答案】D 【解析】概念题,NAT技术将源地址从内部专用地址转换成可以在外部Internet上路由的全局IP地址。 R1、R2是一个自治系统中采用RIP路由协议的两个相…

Java基础知识总结(8)

StringBuilder类(是线程不安全的) StringBuffer 和 StringBuilder二者及其相似,下面是构造方法: StringBuilder StringBuilder()创建空对象,空的字符序列 StringBuilder StringBuilder(StringBuilder builder)传入对象创造字符序列 Strin…

【计算机网络篇】物理层(4)信道的极限容量,信道复用技术

文章目录 🍔信道的极限容量🛸造成信号失真的主要因素⭐码元的传输速率 🛸奈氏准则🛸香农公式🎈练习 🗒️小结 🍔信道复用技术⭐常见的信道复用技术🎈频分复用FDM🎈时分复…

时序分解 | Matlab实现GWO-CEEMDAN基于灰狼算法优化CEEMDAN时间序列信号分解

时序分解 | Matlab实现GWO-CEEMDAN基于灰狼算法优化CEEMDAN时间序列信号分解 目录 时序分解 | Matlab实现GWO-CEEMDAN基于灰狼算法优化CEEMDAN时间序列信号分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.CEEMDAN方法的分解效果取决于白噪声幅值权重(Nstd)和噪声添…

【刷题】滑动窗口入门

送给大家一句话: 那脑袋里的智慧,就像打火石里的火花一样,不去打它是不肯出来的。——莎士比亚 滑动窗口入门 认识滑动窗口Leetcode 209. 长度最小的子数组题目描述算法思路 Leetcode 3. 无重复字符的最长子串题目描述算法思路 Leetcode 1004…

部署应用到K8s集群(未完)

(等熟悉一番再来写,因为按小时结算的。。。) 1 、 kubectl run 启动 nginx 应用 kubectl run nginx --imagenginx:latest 2、将本地机器的80端口转发到集群中名为nginx的Pod的80端口 kubectl port-forward --address 0.0.0.0 pod/nginx 80:8…

AHI对MySQL性能的影响

MySQL中出现很多latch锁,而这个很大程度上和MySQL自适应hash索引有关。 AHI概述 MySQL InnoDB存储引擎的自适应哈希(Adaptive Hash Index,下简称AHI)功能 若用户的访问模式基本都是类似KV操作的点查询(point select&…

es bulk批量操作简单实例

(1)定义 bulk允许在单个步骤中进行多次create、index、update或delete请求。 bulk与其他的请求体格式稍有不同,如下所示: { action: { metadata }}\n { request body }\n { action: { metadata }}\n { request body …

FPGA高端项目:FPGA基于GS2971+GS2972架构的SDI视频收发+HLS图像缩放+多路视频拼接,提供4套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐本博主所有FPGA工程项目-->汇总目录本博已有的 SDI 编解码方案本方案的SDI接收发送本方案的SDI接收图像缩放应用本方案的SDI接收纯verilog图像缩放纯verilog多路视频拼接应用本方案的SDI接收OSD动态字符叠加输出应用本方案的SDI接收HLS…

社会责任管理体系审核员

为满足国家越来越多的各种类型、各种规模的企业组织能按照 GB/T 39604-2020《社会责任管理体系要求及使用指南》国家标准建立相应制度,助力组织实现其社会责任管理体系的预期结果,以及满足各类组织对社会责任管理体系实践的需要,了解社会责任…

rr 为什么会出现幻读?

首先要知道mvcc的两个概念, 1. undolog 可以理解为就是一个数据快照,里面包含数据,当前事务ID(相当于版本号)和上一个快照的指针。类似链表。 2. readview 可以理解为事务 读快照, 记录当前事务ID&#xff…

工作需求iview 组件的使用

加油&#xff0c;新时代打工人&#xff01; 源码下载地址 <template><div mouseenter"mousein true" mouseleave"mousein false"><el-input type"text" clearable autocomplete"off" v-model"searchDoc.code&q…

【CSS】html滚动条相关

1.滚动条样式 ::-webkit-scrollbar {width: 10px;height: 10px;z-index: 101; } ::-webkit-scrollbar-thumb {border-radius: 5px;background: #cecece; } ::-webkit-scrollbar-track {// background: #f5f5f5be;background: rgba(33, 85, 163, 0); } ::-webkit-scrollbar-but…