js 纯函数
程序员文章站
2024-02-08 10:34:10
...
纯函数的概念
纯函数就是相同的输入会有相同的输出结果;而且没有任何可观察的副作用。
纯函数例子
let arr = [1, 2, 3, 4, 5, 6, 7]
console.log(arr.slice(0, 3))
console.log(arr.slice(0, 3))
console.log(arr.slice(0, 3))
function getSum(n1, n2) {
return n1 + n2
}
console.log(getSum(1, 2))
console.log(getSum(1, 2))
console.log(getSum(1, 2))
不纯的函数例如:
let arr = [1, 2, 3, 4, 5, 6, 7]
console.log(arr.splice(0, 3))
console.log(arr.splice(0, 3))
console.log(arr.splice(0, 3))
console.log(arr.splice(0, 3))
lodash中提供了很多纯函数的用法:
第一步安装lodash,$ npm i -g npm $ npm i --save lodash
第二部导入lodash const _ = require(‘lodash’)
lodash中提供了方法:例如_.first() _.last() _.toUpper() _.reverse() _.memoize()
使用纯函数的好处:
1、可缓存(因为纯函数对相同的输入始终有相同的结果;所以可以把纯函数的结果缓存起来) memoize函数会把结果缓存起来。
const _ = require("lodash")
// 求圆面积
function getArea(r) {
console.log(r)
return Math.PI * r * r
}```
let getAreaWithMemory = _.memoize(getArea)
console.log(getAreaWithMemory(4))
console.log(getAreaWithMemory(4))
console.log(getAreaWithMemory(4))
2、可测试
3、并行处理
纯函数的副作用:
纯函数的副作用:会让一个函数变得不纯;例如
let min = 16
function checkAge(age) {
return age >= min
}```