Sym - 一个用 Java 实现的现代化社区平台 • 源码 • 注册

Pipe - 小而美的开源博客平台 • 体验 • 皮肤
Solo - 一个用 Java 实现的博客系统,为你或你的团队创建个博客吧! • 源码下载 
Wide - 一个基于 Web 的 Go 语言 IDE • 教程试用

什么是纯函数?

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 秒


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

留下你的脚步