函数式编程总结

本文是对函数式编程的全面总结,涵盖了从基础概念到高级技巧,包括JavaScript函数基础、高阶函数、闭包、数组的函数式编程、柯里化、偏应用、组合与管道以及函子等内容。通过学习,可以掌握函数式编程的核心思想和实用技巧。
摘要由CSDN通过智能技术生成

函数式编程总结

函数式编程入门已经看完了,来总结一下吧。学了大概半个多月了,觉得学到了很多东西,想应用到实际中去,于是面试的时候问了一下面试官函数式编程在实际开发中的应用场景。面试官说函数式编程是个好东西,但是实际应用的场景不多。而且用函数式编程写出来的东西没接触过的人可能看不懂,需要通读代码。不过多了解总是好的。还是有点失望的。但是总是有机会用到的,就算只是比别人多了解一点也是好的。以下代码复杂一点的我会写 ES6 和 ES5 两个版本,看的清楚一些。简单的就只写 ES6。话不多说,总结一下这段时间的学习。

第一章 函数式编程简介

第一章简要的介绍了一下函数式编程,以及函数式编程可以带来的一些好处。比较重要的有下面几个方面

  • 函数式编程仅依赖输入输出就可以完成自身的逻辑,不会改变任何外部变量的值。
  • 函数的引用透明性:对于所有相同的输入都返回相同的输出。
  • 函数式编程是告诉代码该怎么做,声明式编程只关心做什么

具体的可以参考 函数式编程简介

第二章 JavaScript 函数基础

这一章主要讲了一些 js 里面的基本概念,如何用 babel 将 ES6 的代码转换成 ES5 的。然后构建了我们将要运行的代码的环境

具体的可以参考 函数式编程之 Javascript 基础及环境配置

第三章 高阶函数

这一章主要讲了一下高阶函数的概念,即接受另一个函数作为参数的函数称为高阶函数。然后简单介绍了 js 中的函数。并介绍了高阶函数与抽象的关系。抽象让我们能够专注于预定的目标而无需关心底层的实现。我们还创建了几个简单的函数来帮助理解抽象的概念。

具体的可以参考 函数式编程之高阶函数

第四章 闭包与高阶函数

第四章简单介绍了闭包的概念,然后介绍了闭包在高阶函数中的应用并创建了几个简单的函数

  • tap 函数

    tap 函数接收一个参数,返回一个包含该参数的闭包函数。主要用于调试。

    // ES6
    const tap = (value) => {
          
        (fn) => {
          
            typeof(fn) === 'function' && fn(value)
            console.log(value)
        }
    }
    // ES5
    var tap = function(value){
          
        return function(fn){
          
            typeof(fn) === 'function' && fn(value)
            console.log(value)
        }
    }
    
  • unary 函数

    接收一个函数,将它的参数长度变为 1。比如 parseInt 接收两个参数,因此使用 map 方法会发生错误。这时候就是它的用武之地了

    const unary = (fn) => {
          
        return fn.length === 1 ? fn : arg => fn(arg)
    }
    
  • once 函数

    接收一个函数。顾名思义,就是该函数只能运行一次,比如支付等场景下

    // ES6
    const once = (fn) => {
          
        let done = false;
        return function(){
          
            return done ? undefined :((done = true),fn.apply(this,arguments));
        }
    }
    
  • memoized 函数

    接收一个函数,返回一个函数,每次调用的结果先在 cache 中找,如果找不到再调用原函数。

    // ES6
    const memoized = (fn) => {
          
        const cache = {
          }
        return (arg) => cache[arg] || (cache[arg] = fn(arg))
    }
    
    // ES5
    var memoized = function(fn){
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值