函数式编程是一种编程范例,其中通过应用和组合函数来构造程序。 它是一个声明式编程范例, 其中函数定义是每个返回一个值的表达式树,而不是一系列更改程序状态的命令性语句。1
编程范例的其他示例包括面向对象的编程(其中数据和行为位于同一位置)和过程式编程, 这是一种命令式样式分组算法,将其归为倾向于依赖于共享可变状态的过程。
与强制性或面向对象的代码相比,功能性代码往往更简洁,更可预测且更易于测试-但是, 如果您不熟悉它以及与之相关的通用模式,功能性代码也可能看起来更加密集,并且相关文献可能对新来者不友好。
要理解函数编程要弄懂这几个概念:
- 纯函数
- 给一个输入值会获得一个固定的输出值(相同的输入值总是会获得相同的输出值)。
- 没有其他任何的副作用
- 函数组合 各种小函数通过组合获得更大的函数处理更复杂的问题,
- 辟免状态共亨 这个状态可以是一个全局变量,或是一个作用区域,而函数编程尽量辟免使用这种全局变量等。
- 辟免状态修改 就是一串数据通过函数后原先的值不能被修改,这是函数编程的核心,输入和输出的对应的,输入不变输入也不会变。
- 辟免副作用 所谓副作用是你运行了一个函数却改变了一个全局变量的值,或者副加的运行一个外部程序,这些在函数编程中都是不允许。
- 声明式与命令式
- 声明式:怎么做,我们的代码描述几个具体的步聚来达成某个目地。
- 命令式:做什么,我们代码描述数据流
JavaScript(JS)是函数为第一类级的轻量级,解释性,即时编译的编程语言。2
学习一门语言从三个方面入手:
- 主要的数据类型; JS的数据类型主要就:数值,字符,boolean, symbol, 对象; 对象里面又包含:函数,数组,时间,正则等。
- 组合方式; 常规的加减乘除,逻辑关系,还有各种的运算符各种的组合方式等;
- 抽象化; 把一个具体的问题通过代码层面展示出来,用一个类去代表一个具体的事物,然后类里面的事物的各种属性等;
例如我们去声明一个变量:
const x = 3
const y = 4
例如我们去声明一个函数:
function add (x,y) {
return x+y
}
然后运行该函数:
add (x,y) //=> 7
javascript中可以这样声明一个函数:
const double => (x) => x*2
double (1) //=> 2
// currying: 连续的函数
const add = (x) => (y) => x+y
add (1) (2) //=> 3
// 函数组合
add (double (1)) (double (2)) //=> 6
// 数组循环
const arr = [1,2,3,4]
arr.map (double) //=> [2,4,6,8]
// 连续循环
const arr = [1,2,3,4]
arr.map (double).map (double) //=> [4,8,12]
// 高阶函数
// 所谓的高阶函数是指一个函数,他要传入一个函数作为参数,或者值是返回另一个函数;
const int = (x) => x+1
const add2 = (fn) => fn(2)
add2(int) //=> 3
| NO. | Content |
|---|---|
| 1 | 分享最近阅读的书籍清单(一) |
| 2 | 分享最近阅读的书籍清单(二) |
| 3 | 分享最近阅读的书籍清单(三) |
| 4 | 如何面对35岁 |
| 5 | 分享最近阅读的书籍清单(四) |
| 6 | 为什么你应该学习多种语言及哪里可以学到他们 |
| 7 | 作为大龄程序员,你如何持续的保持自己的竞争优势 |
| 8 | 程序员在职场中如何缓解过度焦虑 |
| 9 | 分享最近使用过的记笔记软件 |
| 10 | 分享最近阅读的书籍清单(五) |
| 11 | 函数编程在JavaScript中的简单应用 |
| 如果喜欢该文章欢迎Star我的github | |
| 捐助我的创作 | |
| 我的社区更新地址 | |
| Email: tiglapiles@gmail.com | |
| Home Page |