js中的函数式编程
文章类型:Javascript
发布者:hp
发布时间:2023-04-20
一:是什么
1:将计算机程序视为数学函数的组合,强调函数的纯粹性和不可变性
2:着眼点是函数,不是过程,强调的是如何通过函数的组合变换去解决问题,而不是通过写什么样的语句去解决问题
3:函数就是一种描述集合和集合之间的转换关系,输入通过函数都会返回一个输出值
4:实际上是一个关系,或者说是一种映射,而这种映射关系是可以组合的,一旦我们知道一个函数的输出类型可以匹配另一个函数的输入,那它们就可以进行组合
5:主体思想是所有的状态变换都可以通过函数完成,更注重结果
二:特点
1:函数是一等公民,函数可以作为变量、参数或返回值来使用,将函数作为参数传递给其他函数,或者将函数作为返回值从函数中返回
2:声明式编程
3:惰性执行
4:无状态和数据不可变,使得代码更加可预测,并且使并发编程更加容易
5:高阶函数:指接受函数作为参数或返回函数的函数。在JavaScript中,高阶函数可以被用来创建更加灵活的函数
const numbers = [1, 2, 3, 4, 5, 6];
const evenNumbers = numbers.filter(num => num % 2 === 0); // [2, 4, 6]
const doubledNumbers = numbers.map(num => num * 2); // [2, 4, 6, 8, 10, 12]
6:纯函数,指没有副作用,不会修改任何外部状态,也不依赖任何外部状态。
function add(num1, num2) {
return num1 + num2;
}
三:类型
1:柯里化,指将一个带有多个参数的函数转化为接收一个参数的一系列函数
const add = (num1) => (num2) => num1 + num2;
const addFive = add(5); // 创建一个新函数,将5作为第一个参数
console.log(addFive(3)); // 输出8
console.log(addFive(10)); // 输出15
2:函数组合,将多个函数组合成一个新的函数,使其能够执行多个函数的操作
const add = (num1, num2) => num1 + num2;
const multiplyByTwo = num => num * 2;
const addAndMultiply = (num1, num2) => multiplyByTwo(add(num1, num2));
console.log(addAndMultiply(2, 3)); // 输出10