zoukankan      html  css  js  c++  java
  • 函数式编程的入门(一)

      随着对js的深入,有一种编程思想越发重要,那就是 函数式编程思想。

      函数式编程思想就是 将复杂的函数转变成为简单的函数。通过嵌套的函数调用来实现这一过程

      函数式编程通常有一下几个特点:

        1. 函数是 “第一等公民”:函数如其他数据类型一样,可以赋值,可以作为参数和返回值

        2.函数有明确的输入和输出:相当于高中数学中的映射,对于相同的输入,只会返回相同的输出

        3.函数无副作用:不会对dom进行操作,不会修改全局变量

        4.无外部影响:函数的运行不依赖外部的变量,只会受入参的影响。

      函数式编程的的核心:

        1.纯函数

          相同的输入只会得到相同的输出,无副作用,无外部依赖

          Array对象方法中的 slice 和 splice,slice是不改变原数组,而splice会修改原数组,所以不纯洁

        2.函数柯里化

          将一个多参数的函数转为单个参数的函数称为函数的柯里化,柯里化之后的函数称为柯里化函数。

        

    var add=function(x,y){//普通函数
       return x+y       
    }
    
    add(1,2)//3
    var add=function(x){//柯里化函数
        return function(y){
            return x+y         
        }
    }
    let add=x=>y=>x+y//es6的写法,是不是很简洁
    add(1)(2)//3
    

      柯里化函数相比于不同函数更加高效,简洁。

      柯里化函数由于只有一个参数,在运行时会读取缓存,因而可以提高性能

         3.函数组合

          函数组合顾名思义就是把多个函数组合在一起

      

    //两个函数的组合
    var compose = function(f, g) {
        return function(x) {
            return f(g(x));
        };
    };
    
    //或者
    var compose = (f, g) => (x => f(g(x)));
    
    var add1 = x => x + 1;
    var mul5 = x => x * 5;
    
    compose(mul5, add1)(2);
    // =>15 
    

        4.Point Free

        pointfree 模式指的是,永远不必说出你的数据。它的意思是说,函数无须提及将要操作的数据是什么样的。纯函数、函数柯里化以及函数

    // 非 pointfree,因为提到了数据:word
    var snakeCase = function (word) {
      return word.toLowerCase().replace(/s+/ig, '_');
    };
    
    // pointfree
    var snakeCase = compose(replace(/s+/ig, '_'), toLowerCase);
    

      

    组合协作起来非常有助于实现这种模式。

        

  • 相关阅读:
    UI自动化定位控件添加醒目标识
    Web自动化测试代码优化方案之定位、操作
    面试常用英文关键字知多少
    Linux常用命令必知必会
    Jenkins自动化UI测试Tomcat报错“The web application [/jenkins] appears to have started a thread named”解决办法
    appium API元素定位方法汇总
    Jmeter参数化方法
    python学习-文件读写整理
    python学习_模块化示例
    python学习-python webdriver API(转载)
  • 原文地址:https://www.cnblogs.com/liuxin-673855200/p/11022634.html
Copyright © 2011-2022 走看看