8. 纯函数的好处

1/8/2023 js

# 纯函数的好处:

    1. 可缓存
      因为纯函数对相同的输入总是有相同的输出,所以可以把纯函数的结果缓存起来
const _ = require('lodash')
// 计算圆的面积
function getArea(r) {
  console.log('半径', r)
  return Math.PI * r * r
}

// // 记忆函数
// memoize接受一个纯函数作为参数,返回一个带有记忆功能的函数
// let getAreaMemory = _.memoize(getArea)
// console.log(getAreaMemory(2))
// console.log(getAreaMemory(2))
// console.log(getAreaMemory(2))


// 手动模拟一个memoize函数(记忆函数)
function memoize(f) {
  let cache = {}
  return function() {
    let arg_str = JSON.stringify(arguments)
    // 初次调用会执行f.apply(f, arguments)函数,非初次调用会使用之前存储的value:cache[arg_str]
    cache[arg_str] = cache[arg_str] || f.apply(f, arguments)
    return cache[arg_str]
  }
}
let getAreaMemory = memoize(getArea)
console.log(getAreaMemory(2))
console.log(getAreaMemory(2))
console.log(getAreaMemory(2))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
    1. 可测试
      纯函数让测试更方便
    1. 并行处理
      在多线程环境下并行操作共享的内存数据很可能会出现意外情况 纯函数不需要访问共享的内存数据,所以在并行环境下可以任意运行纯函数
最近更新时间: 2/4/2023, 10:01:08 AM
강남역 4번 출구
Plastic / Fallin` Dild