纯函数
之前在学习redux的时候有接触到纯函数这个概念,也没有仔细的研究。现在对这个概念还是模棱两可的。
纯函数:函数执行后的结果只与传入的参数有关,并且不受系统环境变化、调用环境与次序的影响,网上说也就是函数执行时没有副作用,通俗的讲是,同样的操作,得到的一定是同样的结果。通过下面的例子来理解这句话的意思
不管有没有参数,何时调用,fun1调用后结果都是一样的。
如下不是纯函数,因为函数里引用到了全局变量a ,所以fun2的执行结果受到全局变量a的影响,a可能会变化!,要是把a当参数传入函数则是纯函数。
当传入的参数是对象,这时参数是这个对象的引用地址,当对象改变的时候,函数的执行结果还是变化了,虽然是传入的是同一个参数,这就是系统变化的时候。
当在函数里获取dom节点的时候,也是会产生副作用的。如果这个dom节点发生变化,函数的结果也不一样了。
在在函数里依赖别的函数,这样当依赖的函数功能发生变化的时候,函数的执行结果也不一样了。
在编程的时候。一般都没怎么写纯函数,因为
这样传入的参数就变得很多了。
功能分的更细了,写的方法更多了
优点也很多:
复用性很高,不需要考虑执行环境,也就是上下文。
结果很明确
对执行的顺序没有要求
同样的输入,必然是同样的结果。
Last updated