🎶 Sym - 一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)平台

📕 思源笔记 - 一款桌面端笔记应用,支持 Windows、Mac 和 Linux

🎸 Solo - B3log 分布式社区的博客端节点,欢迎加入下一代社区网络

♏ Vditor - 一款浏览器端的 Markdown 编辑器

什么是纯函数?

2019-02-18

回答

纯函数是一个满足以下两个条件的函数:

  • 给定相同的输入,返回输出结果必须相同
  • 在作用域之外不能改变其他数据或提供给函数的数据。

纯函数在满足以上两个条件时,允许在自身内部对自己的变量进行改变。

纯函数

const a = (x, y) => x + y
const b = (arr, value) => arr.concat(value)
const c = arr => [...arr].sort((a, b) => a - b) 

非纯函数

const a = (x, y) => x + y + Math.random()
const b = (arr, value) => (arr.push(value), arr)
const c = arr => arr.sort((a, b) => a - b) 

加分回答

  • 由于纯函数的可靠性,使他更加容易被理解。
  • 所有函数都应该是纯函数,除非需要他产生一些副作用,如:setInnerHTML
  • 如果一个函数没有返回值,即可以说明他产生了副作用。
  • 对比 Mutable 和 Immutable 及 Mutating 和 Non-Mutating

返回总目录

每天 30 秒


欢迎注册黑客派社区,开启你的博客之旅。让学习和分享成为一种习惯!

留下你的脚步