1.纯函数是指在函数的执行过程中,不会对程序的状态进行任何改变,也不会对外部环境产生任何副作用,即只依赖于其输入参数,而不依赖于任何外部变量或状态的函数。
特征
1、相同的输入总是产生相同的输出,即函数的输出只由输入决定,不受外部状态或副作用的影响。
2、函数对外部状态没有依赖,也不会改变外部状态,即不会对程序的其他部分产生任何副作用。
3、函数不会修改传入的参数,而是返回一个新的值,保持输入参数的不可变性。
4、函数的执行过程对于调用者来说是透明的,即调用者不需要了解函数的内部实现细节,只需要关注输入和输出
2.
柯里化(Currying)是一种函数式编程技术,它将一个接受多个参数的函数转换为一系列接受单一参数的函数。柯里化的主要目的是让函数更易于复用和组合
。通过柯里化,你可以创建一些预先填充了部分参数的函数变体,并在后续调用中重用它们。这种特性使得柯里化函数非常适合用于创建可配置的函数和简化代码。
用途:
提高函数的复用性:通过创建部分应用的函数变体,可以重用某些已经设置好的参数,从而减少重复代码。
函数组合:柯里化有助于组合多个简单的函数以创建更复杂的函数。这使得代码更具可读性和可维护性。
延迟计算:柯里化允许将多个参数分开传递,可以用于创建需要在将来执行的函数,从而实现延迟计算。
3.
副作用让函数变得不纯。如果依赖于外部状态就无法保证输出相同,就会带来副作用。
副作用的来源:配置文件、用户的输入、数据库等等
所有的外部交互都有可能产生副作用,副作用会给程序带来安全隐患和不确定性,要尽可能的控制副作用在可控制的范围内发生。
4.
数据劫持,指的是在访问或者修改对象的某个属性时,通过一段代码拦截这个行为,进行额外的操作或者修改返回结果。