纯函数

纯函数概念

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

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

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

纯函数副作用

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容