zoukankan      html  css  js  c++  java
  • 函数式编程

    函数式编程,属于编程范式的一种

    1 函数是第一公民,可以返回值,也可以作为其他函数的参数

    //console是一个函数
    function con(v){
      console.log(v)
    }
    // execute 也是一个函数
    function execute(fn){
      fn(1)
    }
    //将con函数作为参数传进execute函数
    execute(con) // 1

    2 接近自然语言的写法

      晓池吃完饭然后就去洗澡 可以表现为eat().bathe()

    // 吃饭函数
    function eat(eat){
      this.e = eat;
      return this;
    }
    // 洗澡函数
    function bathe(bathe){
      this.b = bathe;
      return this;
    }
    
    var person = eat("晓池在吃饭").bathe("晓池去洗澡了");
    console.log(person.e) // 晓池在吃饭
    console.log(person.b)  // 晓池去洗澡了

     3 函数式编程的特性

      匿名函数,即没有名字的函数,在函数式编程中很常见,有时候我们需要通过它(不复用的函数)来完成部分功能,下面我们通过定义一个each函数来了解一下:

    // 自定义each函数
    function each(arr,func){
      var length = arr.length;
      for(var i = 0 ;i <length; i++){
        func(i,arr[i])
      }
    }
    // 执行each函数,传进一个匿名函数作为该函数的参数
    each([1,2,3],function(i,v){
      console.log('key:' + i + ',value:' +v);
    });
    //输出内容
    //key:0,value:1
    //key:1,value:2
    //key:2,value:3

     柯里化:柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术

    //定义add函数,并返回一个函数
    function add(num){
      return function(x){
         return num + x;
      }
    }
    add1 = add(1)
    console.log(add1(3)) // 4

    高阶函数:有函数作为参数或函数内部返回一个函数,都可称该函数为高阶函数 ,以上的each函数即算是高阶函数的一种。

    待续。。。

     注:部分概念参考其他文章。

  • 相关阅读:
    tcp连接建立和断开
    端口状态说明 LISTENING、ESTABLISHED、TIME_WAIT及CLOSE_WAIT
    window IIS6/IIS7取消脚本执行权限,禁止运行脚本木马
    java 各种架构图汇总
    .NET平台常见技术框架整理汇总
    SQL Server中的Merge Into
    iText从LGPL改成AGPL历史来龙去脉
    工具系列 | 分布式日志管理graylog 实战
    目前博客使用的主题模板
    RLChina 文章
  • 原文地址:https://www.cnblogs.com/mimeay/p/4782657.html
Copyright © 2011-2022 走看看