纯函数是一类特别的函数: 只要是同样的输入(实参),必定得到同样的输出(返回)

纯函数的特点:

  1. 它没有改变原来参数的值
  2. 它没有修改外部的变量和数据
  3. 每次调用时传递相同的值,返回的结果永远一样

必须遵守以下一些约束

  1. 不得改写参数数据
  2. 不能调用Date.now()或者Math.random()等不纯的方法
  3. 不适用于网络请求等操作

例如:

  • 这是一个纯函数,每次输入相同的参数,都返回一个相同的新数组,不会改变外部变量的值
let array = [1, 2, 3];
function demo(array, item) {return [...array, item];
}
demo(array, 4);
  • 这不是一个纯函数,因为会改变外部变量的值
let array = [1, 2, 3];
function demo(array, item) {return array.push(item);
}
demo(array, 4);

redux的reducer函数必须是一个纯函数

【Javascript】纯函数相关推荐

  1. javascript的纯函数

    javascript纯函数 javascript纯函数 1.什么是纯函数? 2.例子 : 1.什么是纯函数? 一个函数的返回结果只依赖于它的参数,并且在执行过程里面没有副作用,我们就把这个函数叫做纯函 ...

  2. JS高级——纯函数、柯里化(手写自动柯里化函数)、组合函数(手写自动组合函数)

    一.理解JavaScript纯函数 函数式编程中有一个非常重要的概念叫纯函数,JavaScript符合函数式编程的范式,所以也有纯函数的概念: 在react开发中纯函数是被多次提及的: 比如react ...

  3. oninput 事件- 输入提示-纯函数

    oninput 事件在用户输入时触发. 该事件在 <input> 或 <textarea> 元素的值发生改变时触发. 提示: 该事件类似于 onchange 事件.不同之处在于 ...

  4. JavaScript函数式编程之深入理解纯函数

    更多相关内容见博客 https://github.com/zhuanyongxigua/blog 纯函数是函数式编程的基础,需要重点理解. 纯函数的概念: 纯函数是这样一种函数,即相同的输入,永远会得 ...

  5. 在javascript中使用纯函数处理副作用

    在javascript中使用纯函数处理副作用 今天给大家带来一片译文, 详情请点击这里.可能在墙内哦 开始了, 如果你点开这篇文章, 就证明你已经开始涉及函数式编程了, 这距离你知道纯函数的概念不会很 ...

  6. JavaScript函数式编程(纯函数、柯里化以及组合函数)

    JavaScript函数式编程(纯函数.柯里化以及组合函数) 目录 JavaScript函数式编程(纯函数.柯里化以及组合函数) 前言 1.纯函数 1.1.纯函数的概念 1.2.副作用 1.3.纯函数 ...

  7. JavaScript中的纯函数是什么?

    Pure functions are the atomic building blocks in functional programming. They are adored for their s ...

  8. javascript 中的纯函数

    纯函数 引言 对于函数,大家都不陌生,但是对于纯函数可能有些生疏.我们在写函数的时候,会肆无忌惮,充分的利用js的一些特性,比如使用作用域去修改外部变量,对象属性,数据结构等.这样写如果稍不注意,可能 ...

  9. JavaScript 数组纯函数

    1. 常用的数组 API forEach 遍历所有元素,item 对应的是元素的值,index 对应的是元素的位置 let arr = [4, 6, 8]; arr.forEach(function( ...

最新文章

  1. Android 入门开发
  2. 转:mybatis - 分页功能
  3. Egret note
  4. oracle数据库无法显示图层,ArcMap 无法在Oracle中创建图层案例
  5. Javascript高级程序设计第二版第十二章--Event--笔记
  6. 对抗弱网下的音视频难题,声网正式开源抗丢包音频编解码器 Agora SOLO!
  7. 华为系统移动数据连接到服务器,怎样设置手机数据连接到服务器配置
  8. python网络爬虫与信息提取北京理工大学ppt_北京理工大学Python网络爬虫与信息抽取学习笔记10,信息提取...
  9. 论文赏析【EMNLP19】多粒度自注意力机制(MG-SA)
  10. windows 上面的tensorflow-GPU、cuda、cudnn 安装
  11. JUCE框架教程(3)—— Component ClassGraphics入门
  12. linux文件实时同步(rsync+inotiy)
  13. 【论文笔记】Combining Reinforcement Learning and Rule-based Method to Manipulate Objects in Clutter
  14. java骰子_Java实现的简单掷骰子游戏示例
  15. 二进制安装Kubernetes(k8s) v1.24.0 IPv4
  16. iA Writer for Mac(mac好用的写作软件)
  17. Android平台OpenGL ES图像处理(improving)
  18. 闭关修炼——one——struts2
  19. Android 扫码登录案例
  20. linux端口抓包工具下载,linux下的抓包工具tcpdump

热门文章

  1. 解决SpringBoot集成Thymeleaf 出现java.lang.ClassNotFoundException: org.unbescape.html.HtmlEscape异常问题
  2. 【推荐系统技术实现】
  3. java 请求参数加解密
  4. JAVA应试技巧----大数开方
  5. 【工程实践】飞马SLAM100三维数据处理
  6. 织梦模板网站后台数据库设定详细解释说明
  7. 虚拟变量的方法介绍及python实现方式
  8. 思念是美好的,思念是痛心的...
  9. python爬虫_requests获取小黄人表情保存到文件夹
  10. android中okhttp原理详解,Android中okhttp原理详解-极度针对面试篇