js的纯函数
函数式编程中的一个概念叫纯函数,js符合函数式编程的范围,有纯函数的概念。
百度一下概念
写代码时,一个函数如果符合一下的条件,那么他就属于纯函数:
0一个函数的返回结果只依赖于它的参数,并且在执行过程里面没有副作用
1这个函数在相同的输入值时,即产生相同的输出函数的输入输出以外的其他以他隐藏的信息或状态无关 2这个函数不能有语义上面可变的副作用,触发事件,使输出设备输出,更改输出内容等..
简单说输入什么返回什么,中间不掺杂可变逻辑代码,(副作用)..
demo1
function add(a,b){
return a+b
}
//纯函数
//这个函数输出的就是我输入的,中间没有产生任何的副作用,可变
demo2
let modify = 100;
function add(num){
return modify+num
}
console.log(add(100)) // 200
modify = 200;
console.log(add(100)) // 300
//不是纯函数
//因为这个函数依赖一个外部的变量modify,变量发生变化时,就会影响到确定后的输出,产生确定后输出
//修改为纯函数的话, 用const modify = 100;定义这个变量即可
demo3
function say(name) {
console.log(name.sex,name.age)
name.sex = "保密"
}
//say()不是纯函数
//无论输出什么,都抛出undefined,产生了副作用,修改了传入的对象
纯函数在函数式编程中的好处?
1不用担心可变逻辑,安心的写
2实现业务的同时,不用关心传入的内容或依赖其他的外部变量影响
3执行时,用到时,内容不会被修改,确定输入后即刻抛出相同输出
总结
为什么要煞费苦心地构建纯函数?因为纯函数非常“靠谱”,执行一个纯函数你不用担心它会干什么坏事,它不会产生不可预料的行为,也不会对外部产生影响。不管何时何地,你给它什么它就会乖乖地吐出什么。如果你的应用程序大多数函数都是由纯函数组成,那么你的程序测试、调试起来会非常方便。