纯函数概念
相同输入必然得到相同输出,且函数必定有参数和返回值。
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函数为不纯函数
纯函数的好处
-可缓存
-可测试(如单元测试中,就是输入值预言得到输出结果,正符合纯函数必有输入输出的特性):纯函数让测试更方便
-并行处理
纯函数副作用
所有的外部交互都有可能带来副作用(如,使用全局变量,用户输入,数据库数据来源,配置文件等),但副作用不能完全禁止,尽可能控制在可控范围内使用即可。