纯函数

2021/7/21 13:06:06

本文主要是介绍纯函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

什么是纯函数?

  • 相同的输入永远会得到相同的输出,而且没有任何可观察的副作用

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

纯函数库

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

纯函数的优点

  • 可缓存(间接提升性能

    因为纯函数对相同的输入始终有相同的结果,所以可以把纯函数的结果缓存起来

  • 可测试

    纯函数让测试更方便

  • 并行处理

    在多线程环境下并行操作共享的内存数据很可能会出现意外情况

    纯函数不需要访问共享的内存数据,所以在并行环境下可以任意运行纯函数

本章例子

纯函数

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));

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

不纯的函数

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

console.log(array.splice(0, 3));
console.log(array.splice(0, 3));
console.log(array.splice(0, 3));

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

缓存

const lodash = require('lodash');

function getArea(r) {
    console.log(r);
    return Math.PI * r * r;
}

let getAreaWithMemory = lodash.memoize(getArea);

console.log(getAreaWithMemory(4));
console.log(getAreaWithMemory(4));
console.log(getAreaWithMemory(4));
console.log(getAreaWithMemory(5));

// 4
// 50.26548245743669
// 50.26548245743669
// 50.26548245743669
// 5
// 78.53981633974483


这篇关于纯函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程