js中的纯函数

文章类型:Javascript

发布者:hp

发布时间:2024-12-02

一:概述

在函数式编程过程中,经常会提到纯函数,那么他是什么呢?

二:内容

1:定义:满足以下三个条件,则被称为纯函数

(1):函数在相同的输入值时,产生相同的输出

(2):函数没有引入全局状态

(3):函数在执行过程中没有副作用,不修改函数之外任何的内容

2:特点:

(1):确定性:对于相同的输入,纯函数总是产生相同的输出

(2):无副作用:纯函数不会修改其外部环境,包括全局变量、输入参数对象等

3:好处:

(1):可预测性

(2):可测试性

(3):引用透明性

(4):函数组合性

(5):并发安全性

三:代码

function sum(a, b) {
  return a + b;
}
//filter 过滤数组中的元素,它不对原数组进行操作是一个纯函数

var names = ["张三", "李四", "王五", "赵六"];
var newNames1 = names.filter((n) => n !== "张三");
console.log(newNames1); // [ '李四', '王五', '赵六' ]
console.log(names); // [ '张三', '李四', '王五', '赵六' ]

四:总结

1:纯函数是指在相同的输入下,始终产生相同的输出,并且没有副作用的函数。

2:纯函数不会修改或依赖于函数之外的状态,也不会对外部环境产生任何可观察的影响

3:纯函数的关键是避免对外部状态的依赖和修改,以及确保相同的输入始终产生相同的输出

五:拓展

(一):副作用是什么?

1:副作用指的是执行一个函数时,除了返回函数值之外,还对调用函数产生了附加的影响,

2:副作用不限于网络请求、输出数据、修改全局变量、DOM查询等

3:副作用是在某些特定情况下是必须的,并不是所有函数都是纯函数

//对原数组操作,不是纯函数
var newNames2 = names.splice(2);
console.log(newNames2); // [ '王五', '赵六' ]
console.log(names); // [ '张三', '李四' ]