4.函数式编程纯函数

纯函数概念:相同得输入永远会得到相同的输出,而且没有任何可观察的副作用

纯函数就是类似数学中的函数(用来描述输入和输出之间的关系),y=f(x)

lodash是一个纯函数的功能库,提供了对数组、数字、对象、字符串、函数等操作的一些方法

数组中的slice和splice分别是:纯函数和不纯的函数

        slice返回数组中的指定部分,不会改变数组,相同的输入都会得到相同的输入

        splice对数组进行操作返回该数组,会改变原数组

slice:

let array=[1,2,3,5,6,7,8]
//slice截取数组方法:数组.slice(a,b) 截取数组索引,a<=x<b的数组元素的值
console.log(array.slice(0,3))
console.log(array.slice(0,3))
console.log(array.slice(0,3))

相同输入相同输出



splice:

//splice每次执行完成都会修改原数组,比如第一次执行,会把数组已被截取的部分移除掉
//即数组变为了[5,6,7,8],再次执行则数组为[8],最后为[]
//因此多次执行相同的方法,输出结果不同,则该函数为不纯的函数

//splice
let array=[1,2,3,5,6,7,8]
//数组名.splice(a,b) a为开始截取元素的索引,b为往后截取多少个索引
console.log(array.splice(0,3))
console.log("原数组:"+array)
console.log(array.splice(0,3))
console.log("原数组:"+array)
console.log(array.splice(0,3))
console.log("原数组:"+array)
console.log(array.splice(0,3))
console.log("原数组:"+array)
//splice每次执行完成都会修改原数组,比如第一次执行,会把数组已被截取的部分移除掉
//即数组变为了[5,6,7,8],再次执行则数组为[8],最后为[]
//因此多次执行相同的方法,输出结果不同,则该函数为不纯的函数

纯函数:函数必须有输入(参数),和输出

简单的纯函数

//简单的纯函数
function getSum(a,b){
    return a+b
}

console.log(getSum(1,2))
console.log(getSum(1,2))
console.log(getSum(1,2))

函数式编程不会保留计算中间的结果,所以变量是不可变的(无状态的)

比如getSum,可以通过传入参数,来输出一个结果,而函数内部的结果我们是无法获取到的,不会保存中间结果

我们可以把一个函数的执行结果交给另一个函数去处理

这边可以用到函数库,比如lodash

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值