纯函数概念

本文探讨了纯函数的概念,强调它们在相同输入下始终产生相同输出且无副作用。以lodash库为例,展示了数组的slice()作为纯函数与splice()作为不纯函数的区别。纯函数在函数式编程中扮演重要角色,因为它们允许无状态计算和结果的复用,而不会改变原始数据。文章通过示例解释了如何利用纯函数进行无状态的数据处理。
摘要由CSDN通过智能技术生成

纯函数概念

  • 纯函数:相同的输入永远会得到相同的输出,而且没有任何可观察的副作用
  • 纯函数就类似数学中的函数(用来描述输入和输出之间的关系),y = f(x)

  •  lodash是一种纯函数的功能库,提供了对数组、数字、对象、字符串、函数等操作的一些方法
  • 数组的 slice 和 splice 分别是:纯函数和不纯的函数
  • slice 返回数组中的指定部分,不会改变原数组
  • splica 对数组进行操作返回该数组,会改变原数组

// 纯函数和不纯函数
// slice / splice

let array = [1, 2, 3, 4, 5]

// 纯函数
console.log(array.slice(0, 3))
console.log(array.slice(0, 3))
console.log(array.slice(0, 3))

// 不纯的函数
console.log(array.splice(0, 3))
console.log(array.splice(0, 3))
console.log(array.splice(0, 3))


[1, 2, 3]
[1, 2, 3]
[1, 2, 3]

- - - - - - - - 

[1, 2, 3]
[1, 2, 3]
[1, 2, 3]
[1, 2, 3]
[4, 5]

let numbers = [1, 2, 3, 4, 5]
// 纯函数
numbers.slice(0, 3)
// => [1, 2, 3]
numbers.slice(0, 3)
// => [1, 2, 3]
numbers.slice(0, 3)
// => [1, 2, 3]

// 不纯的函数
numbers.splice(0, 3)
// => [1, 2, 3]
numbers.splice(0, 3)
// => [4, 5]
numbers.splice(0, 3)
// => []
  • 函数式编程不会保留计算中间的结果,所以变量是不可变的(无状态的)
  • 我们可以把一个函数的执行结果交给另一个函数去处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值