纯函数

2020-11-27  本文已影响0人  笨鸟先飞不

纯函数概念

相同输入必然得到相同输出,且函数必定有参数和返回值。

let arr = [1,2,3,4,5,6];
console.log(arr.slice(0,3));  // [1,2,3]
console.log(arr.slice(0,3));  // [1,2,3]
console.log(arr.slice(0,3));  // [1,2,3]
//结论:slice函数为纯函数
let arr = [1, 2, 3, 4, 5, 6];
//splice: 第一参数为查找索引起始点,第二个参数为截取长度
console.log(arr.splice(0,3))  //[1,2,3]
console.log(arr.splice(0,3))  //[4,5]
console.log(arr.splice(0,3))  //[]
//结论:splice函数为不纯函数

纯函数的好处

-可缓存


lodash-memoize.png
自定义memoize.png

-可测试(如单元测试中,就是输入值预言得到输出结果,正符合纯函数必有输入输出的特性):纯函数让测试更方便
-并行处理

纯函数副作用

所有的外部交互都有可能带来副作用(如,使用全局变量,用户输入,数据库数据来源,配置文件等),但副作用不能完全禁止,尽可能控制在可控范围内使用即可。

上一篇 下一篇

猜你喜欢

热点阅读