Skip to content

Latest commit

 

History

History
230 lines (156 loc) · 6.73 KB

File metadata and controls

230 lines (156 loc) · 6.73 KB

函数编程在JavaScript中的简单应用

  1. 什么是函数编程
    1. 函数编程介绍
    2. JavaScript简单介绍
    3. JavaScript中的函数编程

什么是函数编程

函数编程介绍

函数式编程是一种编程范例,其中通过应用和组合函数来构造程序。 它是一个声明式编程范例, 其中函数定义是每个返回一个值的表达式树,而不是一系列更改程序状态的命令性语句。1

编程范例的其他示例包括面向对象的编程(其中数据和行为位于同一位置)和过程式编程, 这是一种命令式样式分组算法,将其归为倾向于依赖于共享可变状态的过程。

与强制性或面向对象的代码相比,功能性代码往往更简洁,更可预测且更易于测试-但是, 如果您不熟悉它以及与之相关的通用模式,功能性代码也可能看起来更加密集,并且相关文献可能对新来者不友好。

要理解函数编程要弄懂这几个概念:

  • 纯函数
    • 给一个输入值会获得一个固定的输出值(相同的输入值总是会获得相同的输出值)。
    • 没有其他任何的副作用
  • 函数组合 各种小函数通过组合获得更大的函数处理更复杂的问题,
  • 辟免状态共亨 这个状态可以是一个全局变量,或是一个作用区域,而函数编程尽量辟免使用这种全局变量等。
  • 辟免状态修改 就是一串数据通过函数后原先的值不能被修改,这是函数编程的核心,输入和输出的对应的,输入不变输入也不会变。
  • 辟免副作用 所谓副作用是你运行了一个函数却改变了一个全局变量的值,或者副加的运行一个外部程序,这些在函数编程中都是不允许。
  • 声明式与命令式
    • 声明式:怎么做,我们的代码描述几个具体的步聚来达成某个目地。
    • 命令式:做什么,我们代码描述数据流

JavaScript简单介绍

JavaScript(JS)是函数为第一类级的轻量级,解释性,即时编译的编程语言。2

学习一门语言从三个方面入手:

  • 主要的数据类型; JS的数据类型主要就:数值,字符,boolean, symbol, 对象; 对象里面又包含:函数,数组,时间,正则等。
  • 组合方式; 常规的加减乘除,逻辑关系,还有各种的运算符各种的组合方式等;
  • 抽象化; 把一个具体的问题通过代码层面展示出来,用一个类去代表一个具体的事物,然后类里面的事物的各种属性等;

例如我们去声明一个变量:

const x = 3
const y = 4

例如我们去声明一个函数:

function add (x,y) {
  return x+y
}

然后运行该函数:

add (x,y) //=> 7

JavaScript中的函数编程

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

Footnotes

1 https://en.wikipedia.org/wiki/Functional_programming

2 https://developer.mozilla.org/en-US/docs/Web/JavaScript