JavaScript之函数式编程思想-纯函数

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/c__dreamer/article/details/79736339

        在任何一个语言中都避免不了Bug的存在。我们只能用一系列编程的思想尽量避免Bug的产生。

        Bug守恒定律

        当我们在开发网站的时候,一旦网站的应用代码量达到一定程度的时候,它将不可避免的包含某种Bug,这个东西并不是JavaScript特有的,而是几乎所有的语言都有的通病--虽然不是不可能,想要彻底清除代码中的Bug是非常难办到的,但是,这并不意味着我们不能通过某种编码方式来避免Bug的引入。

        避免Bug利器---纯函数

        我们知道函数的概念,传统的函数是接受到参数然后返回一个值,就是对于同样的输入X都有相同的输出Y。也就是说当函数执行的时候,纯函数不依赖和不修改作用域之外的变量,只在自己作用域内搞事,必须还有返回值。
        下面看一些代码吧
var num = 20 ;
function add(x){
    return x > num;
}
add(18);
      上面代码显然不是纯函数,函数内部利用了外部的变量num。当我们稍微改一下。
var num = 20;
function add(x,num){
   return x > num;
}
       这样写  在函数内部传入num形参就称为了纯函数。
        同样当我们传入的参数是引用值的时候如果我们后续的工作会修改这样的一个值,我们必须用克隆的方法来实现。
function add(_arr){
       var obj = {
        name : "wang",
       }
       var newArr = [];
       for(var i = 0; i < _arr.length; i ++){
           newArr[i] = deepClone(_arr[i]);//使用克隆机制 
       }
       newArr.push(obj);
      return newArr;
}
        我们最常用的纯函数的地方就是数组过滤。
        当我们在搜索显示成员信息的时候,当输入关键字会显示带有关键字的成员信息。当回退的时候,会显示全部的成员信息。
        JavaScript关键代码:
function filterByText(text,arr){
      var newArr = [];
      for(var i = 0; i < arr.length; i ++){
            arr[i].name.indexOf(text) != -1 ? newArr.push(arr[i]) : "";
      }
      return newArr;
  }
        纯函数的作用在以后的组件化开发-状态共享中很多用。
        纯函数更高的好处是:更好的管理状态,使得可预测性增强,降低了代码管理的难度,但是前端基本上都是和副作用打交道,这种纯函数这样的愿望是可遇不可求的。
        --主页传送门--
展开阅读全文

没有更多推荐了,返回首页