javaScript中函数式编程与命令式编程的可靠性和可复用性

  1. 命令式编程
var arr = [1, 2, 3, 4]
var newArr = (arr) => {
	const res = []
	for (let i = 0; i < arr.length; i++) {
		res.push(arr[i] + 1)
	}
	return res
}
console.log(newArr(arr)) //[2,3,4,5]
  • 命令式编程,详细的命令机器去处理事情来达到想要得到的结果,这段代码是”死“的,代码是不可复用,如果增加需求或者改变需求 arr[i]加 3,就要重新定义一个函数
var arr = [1, 2, 3, 4]
var newArr = (arr) => {
	const res = []
	for (let i = 0; i < arr.length; i++) {
		res.push(arr[i] + 1)
	}
	return res
}
console.log(newArr(arr)) //[4,5,6,7]

这样就会存在过多的函数,占用内存大导致内存溢出。

  1. 函数式编程
var arr = [1, 2, 3, 4]
var newArr = (arr, fn) => {
	const res = []
	for (let i = 0; i < arr.length; i++) {
		res.push(fn(arr[i]))
	}
	return res
}
const add = (item) => item + 1
const sum = newArr(arr, add)
console.log(sum)  //[2,3,4,5]
  • 通过函数式编程也可以实现上面的需求.
    如果需求改成和上面一样增加或者改变 arr[i]加 3,就不用重新定义一个函数了,可以这样
var arr = [1, 2, 3, 4]
var newArr = (arr, fn) => {
	const res = []
	for (let i = 0; i < arr.length; i++) {
		res.push(fn(arr[i]))
	}
	return res
}
const add = (item) => item + 1
const sum = newArr(arr, add)
console.log(sum)  //[2,3,4,5]
const newNeeds = (item) => item + 3
const result = newArr(arr, newNeeds)
console.log(result) //[4,5,6,7]
函数式编程又分为纯函数和非纯函数
  1. 纯函数
  • 如果函数的调用参数相同,就永远返回相同的结果,它不依赖于程序执行期间函数外部任何状态或数据的变化,只依赖于它传入的参数。即相同的输入,永远得到相同的输出。而且没有副作用,这样可以保证代码的《稳定性》和《可靠性》
  1. 非纯函数
  • 会改变自己的输入值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值