手记

【金秋打卡】第3天 从函数到函数式编程之路

课程名称:破解JavaScript高级玩法
课程章节:第6章 从函数到函数式编程之路
主讲老师:Cloud

课程内容:

今天学习的内容包括:
6-5 纯函数,副作用,高阶函数等函数式编程概念——纯函数的优点作用等。

课程收获:

编程范式–面向过程编程
  • 特点:主要采取过程调用或函数调用的方式来进行流程控制。流程则由包涵一系列运算步骤的过程,子程序,方法或函数来控制。
  • 代表:C语言等
编程范式-面向对象编程
  • 特点∶它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,对象里的程序可以访问及经常修改对象相关连的数据。在面向对象程序编程里,计算机程序会被设计成彼此相关的对象。
  • 代表:Python, C++,Java,C#等
编程范式–函数式编程
  • 特点︰函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断渐进,逐层推导复杂的运算,而不是设计一个复杂的执行过程。
  • 代表:Haskell , Scala等
函数式编程的优点
  • 代码简洁,优雅
  • 语法灵活,复用性高
  • 容易测试
  • 易升级
  • 并发友好
  • 可维护性好
纯函数
  • 定义∶纯函数就是相同的输入,永远得到相同的输出,并且没有任何副作用。
  • 同入同出
  • 无副作用
纯函数的案例
  • 普通的例子
  • 数组
  • redux中的reducer, reducer的准则就是要纯函数
纯函数的优点
  • 安全:无副作用,不破坏外面的状态
  • 可测试:入参固定,输出固定,好断言
  • 可缓存:同入同出,便于缓存,提升效率
函数的副作用
  • 定义∶函数调用时,除了返回函数值之外,还对外界产生附加的影响。
副作用包含哪些?
  • 修改了变量
  • 修改了入参
  • 输出了日志
  • 操作客户端存储
  • 操作了DOM
  • 与service worker,iframe通讯
  • 发送了Http请求
  • 其他不该做的事情
高阶函数
  • 定义∶就是一个接受函数作为参数或者函数作为输出返回的函数
  • 特征∶函数入参,函数作为返回值,满足任一条件即可
高阶函数
  • 数组中用到的高阶函数
  • Array.prototype.filter
  • Array.prototype.find
  • Array.prototype.map
高阶函数的应用
  • 柯里化
  • Function.prototype.bind
高阶函数衍生-高阶组件
  • 定义:包装了另外一个组件的组件
其他函数式编程的概念
  • compose (组合), pipe(管道)
  • 偏函数,柯里化
  • chain链式调用
思考题
  • 幂等性和纯函数的相似和区别

今天 学习了 纯函数,副作用,高阶函数等函数式编程概念,了解了纯函数的一些特性,也发现在日常工作中,我们常常使用纯函数和高阶组件等,今天形成了一个整体画像。对自己说一句,加油😀~

坚持打卡,坚持学习!明天见💪~

​​

0人推荐
随时随地看视频
慕课网APP