美文网首页
函数式编程1

函数式编程1

作者: 小小小前端 | 来源:发表于2018-06-08 22:41 被阅读0次

概念

函数式编程是一种思想,一种编程范式,需要多写才能体会。

特性

纯函数

相同的输入 肯定得到相同的输出 不依赖外部状态

var arr = [ 1, 2, 3, 4, 5 ]
arr.slice( 0, 3 ) //[0,1,2]
arr.slice( 0, 3 ) //[0,1,2]
var arr1 = [ 1, 2, 3, 4, 5 ]
arr1.push( 1 ); //6   push方法 向数组末尾添加一个元素,并返回新的长度
arr1.push( 1 ); //7
//slice 方法 相同的输入总是得到相同的输出  是纯函数  相反 push不是纯函数

柯里化

传递给函数比部分参数调用他 返回值去处理剩下的参数,每次只能输入一个参数

//柯里化  刚开始传递一部分参数调用函数(checkage(18))  然后让其在返回一个新的函数(checkage18)去处理剩下的参数(checkage18(20))  
var cheakage = min => ( age => age => min )
var checkage = function ( min ) {
    return function ( age ) {
        return min > age;
    }
}
var checkage18 = checkage( 18 ); //产生了闭包 实质
checkage18( 20 ) //返回值 false

函数组合

一个值经过多个函数编程另外一个值 可以把中间的函数合并为一个函数 解决函数嵌套的问题

///函数组合  柯里化 每次传入一个参数  当参数越来越多 里面嵌套函数 越来越多. 解决函数嵌套的问题
var compose  = function(f,g){
    return function(x){
        f(g(x))
    }
}

惰性求值

function getName(){
    var a = 1;
    console.log(22)
    getName = function(){
        console.log(2222)
        return a;
    }
    return a;
}
console.log(getName)//1
console.log(getName)//1
//具体请看js的执行过程

高阶函数

函数当做参数 把传入的函数作为一个封装,然后返回封装函数 达到更高层次的抽象

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

function sum(add,array){
    return add(array[0],array[1]);
}

sum(add,[1,2])

尾调用优化

递归需要保存大量的调用记录,容易发生栈溢出错误,尾递归将递归变为循环只需要保存一个调用记录,不会发生溢出内存的错误。
具体作用优点可以参考阮一峰es6 函数拓展

//尾调用优化  最为显著的是尾递归

function factorial(n,total){
    if(n===1) {
        return n+total

    }else {
        return factorial(n-1,n+total);
    }
}
console.log(factorial(5,0));

闭包

函数式编程几乎都涉及闭包,函数在自身定义所在的作用域位置以外执行就形成闭包。

相关文章

  • RxSwift初探(1)

    一、前提:函数响应式编程思想 简单来说 函数响应式编程 = 函数式编程 + 响应式编程 (1)函数式 函数式编程是...

  • JavaScript函数式编程学习笔记

    函数式编程 1. 什么是函数式编程 函数式编程(英语:functional programming)或称函数程序设...

  • 深入学习 Gradle 自动化构建技术(六)Gradle 插件平

    一、前置知识 1、函数式编程 1)、什么是函数式编程? 面向对象编程是对数据进行抽象,而函数式编程是对行为进行抽象...

  • 函数式编程

    1 文章目标 为什么要学习函数式编程以及什么是函数式编程 函数式编程的特性(纯函数、柯里化、函数组合等) 函数式编...

  • 函数式编程

    函数式编程 1.什么是函数式编程? functional programming is a programming...

  • iOS 函数编程 & 链式编程

    函数式(链式)编程 函数式编程概念 函数式编程是种编程范式 函数式编程 Functional Programmin...

  • Python函数式编程

    一、函数式编程简介 函数式: functional 一种编程范式。函数式编程的特点:1.把计算视为函数而非指令2....

  • Go 函数式编程实战

    Go 函数式编程实战-目录 序致谢前言关于本书关于作者 函数式编程简介1.1 函数概述1.2 什么是函数式编程1....

  • Scala 学习笔记

    Scala 学习笔记 1.函数式编程 函数式编程:函数式编程把函数当作一等公民,充分利用函数,支持函数的多种使用方...

  • 01 Java-Lambda-初体验

    [toc] 函数式编程概念 在命令式编程中告诉程序怎么做,在函数式编程中是要关注做什么 函数式编程初体验 体验1 ...

网友评论

      本文标题:函数式编程1

      本文链接:https://www.haomeiwen.com/subject/jajzsftx.html