纯函数:相同的输入永远会得到相同的输出。而且没有任何可观察的副作用。
lodash 是一个纯函数的功能库,提供了对数组、数字、对象、字符串、函数等操作的一些方法。
数组的slice和splice分别是:纯函数和不纯函数
slice 返回数组中的指定部分,不会改变原数组
splice 对数组进行操作返回该数组,会改变原数组。
函数式编程不会保留计算中间的结果,所以变量是不可变的(无状态的)
我们可以把一个函数的执行结果交给另一个函数去处理
副作用:
副作用让一个函数变的不纯,如果纯函数依赖于外部的状态就无法保证输出相同,就会带来副作用
非纯函数
let mini = 18
function checkAge(age) {
return age >= mini
}
checkAge(20)
纯函数
function checkAge(age) {
let mini = 18
return age >= mini
}
checkAge(20)
副作用的来源:
1.配置文件 2.数据库 3.获取用户的输入
所有的外部交互都有可能代理副作用,副作用也使得方法通用性下降不适合扩展和重用性,同时副作用会给程序中带来安全隐患给程序带来不稳定性,但是副作用不可能完全禁止,尽可能控制它们在可控范围内发生。
网友评论