你不知道的js——纯函数及其作用(函数式编程思想)

你不知道的js——纯函数及其作用(函数式编程思想)

首先关于纯函数:人话是: 不依赖、不修改其作用域之外的函数 (纯函数一定要有return)
写一个简单的纯函数,例如:

function(a,b){
    return a+b;
}

在上一段代码:

var arr = [{name:'tan'}];
function add(_arr){
    var obj = {myLoveName:'li'};
    var newArr[];
    var len = _arr.length;
    for(var i = 0;i<len;i++){
        newArr[i] = deepClone(arr[i]);//deepClone()是自写的一个深度克隆函数,具体作用及源码见  https://blog.csdn.net/qq_39403733/article/details/83685468
    }
    newArr.push(obj);
    return newArr;
}
var newArr = add(arr);
newArr.push({name:hello});

在这段代码中,add()就是一个纯函数。arr的值全部给了newArr,并且在外部修改newArr的值,arr并没有收到影响。
那么举了这么多例子,纯函数究竟有什么作用呢?

说作用之前,不得不提一下Bug守恒定律:一旦代码量达到一定程度,将不可避免的包含某种未知bug,甚至当清除了这个bug的时候,又会产生新的未知bug.
在JavaScript中可以很容易地创建全局变量,这些变量在很多的函数中都能访问修改,这也是导致发生bug的常见原因。并且难以调试
此时,纯函数就能极大地降低bug出现的概率。因为
①纯函数可以很容易的进行单元测试(不需要考虑上下文,只考虑输入输出)
②纯函数具有健壮性,改变执行次序并不会对系统造成影响,一次纯函数可以并行执行。
③更好的管理状态,是可预测性增强,降低代码管理的难度。
此外,纯函数更大的威力是在高级框架之中:组件化开发状态共享。(例如vue/React)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章