JavaScript函数式编程指南读书笔记:1-函数式基本概念

339 阅读3分钟

这是我参与8月更文挑战的第7天,活动详情查看:8月更文挑战

就像黑子的篮球中,各个球员渴望今进入zone那样,笔者也希望能够通过对函数式编程的学习完成自己的进化吧,此篇纯为读书笔记,不喜勿喷哈。

1.基本概念:

1.声明式编程:函数式编程属于声明式编程范式

  • 声明式编程范式:会描述一系列操作,但是不会暴露他们是如何实现或者数据流是如何穿过它们的。它关注于如何用各种表达式来描述程序逻辑,而不一定指明控制流活状态的变化。
  • 命令式(过程式)编程范式:命令式编程将计算机程序视为一系列自上而下的断言,通过修改系统各个状态来计算最终的结果。

2.纯函数

函数式编程的一个前提就是---使用纯函数构建具有不不变性的程序

2.1 纯函数特点:
  • 仅取决于输入
  • 不会造成超出其作用域的变化
2.2 不纯函数例子:
var count = 0;
function add(){
   return ++count;
}

函数add是不纯的,因为他读取并修改了一个外部变量产生了副作用。其结果是不可预见的,因为count可以在调用间隔的任何时间发生改变。

2.3 程序中的副作用:

程序的副作用是什么?

下面的链接地址是笔者搜索到对于副作用,比较有趣且容易理解的解释blog👇

baijiahao.baidu.com/s?id=168675…

2.4 函数式编程小技巧:
  • 将长函数拆解成多个具有单一职责的短函数
  • 通过显式地将完成功能所需的依赖定义为函数参数减少副作用的数量

3.引用透明:

引用透明是定义一个纯函数较为正确的方式。纯度在这个意义上表明一个函数的参数返回值之间的映射关系。

如果一个函数对于相同的输入始终产生相同的结果,那么就称之为引用透明

4.存储不可变数据:

不可变数据是指那些被创建后不能更改的数据。

2.函数式编程的优点

函数式编程实际上是分解(将程序拆分成小片)组合(将小片段链接到一起)之间的相互作用。

小结:

  • 使用纯函数的代码剧不会更改活破坏全局状态,有助于提高代码的测试性可维护性
  • 函数式编程才用声明式的风格,易于推理,这提高了应用程序的整体可读性,通过使用组合lambda表达式使代码跟家精简。
  • 集合中的数据元素处理可以通过链接如mapreduce这样的函数来实现。
  • 函数式编程将函数视为积木,通过一等高阶函数来提高代码的模块化可重用性
  • 可以利用响应式编程组合人各个函数来降低事件驱动程序的复杂性。