纯函数

定义

纯函数是这样一种函数,即相同的输入,永远会得到相同的输出,而且没有任何可观察的副作用。

所以我们可以看出纯函数的定义:

相同输入必定能得出相同输出。

函数执行过程中没有任何副作用。

辨认纯函数

/**
 * 下面例子是个正例(Positive ),
 * 我们可以看出slice函数输入相同的情况下输出必定相同,
 * 而且并不会对array造成影响(内部元素并不会变化)并且也不会对其他环境造成可预见的影响,
 * 所以我们可以说slice是纯函数
 **/
let array = [0,1,2,3,4];

array.slice(0,3);//[0,1,2]
array.slice(0,3);//[0,1,2]
console.log(array);//[0,1,2,3,4]

/**
 *	下面例子是个反例(negative),
 *	可以看见纵使输入相同输出是不定的,
 *	并且函数修改了原始数组(副作用),
 *	这是个完美的非纯函数
 **/
let array2 = [0,1,2,3,4];
array.splice(0,3);//[0,1,2]
array.splice(0,3);//[3,4]
console.log(array);//[]

从上面的例子就能很容易看出所谓副作用就是:

在计算结果的过程中,系统状态的一种变化,或者与外部世界进行的可观察的交互

副作用可能包含,但不限于:

更改文件系统
往数据库插入记录
发送一个 http 请求
可变数据
打印/log
获取用户输入
DOM 查询
访问系统状态

参考博客:

纯函数学习 (一)什么是纯函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值