函数式编程简介

一、什么是函数式编程?

函数式编程主要基于数学函数和它的思想。函数式编程是一种范式,我们能够以此创建仅依赖输入就可以完成自身逻辑的函数。这保证了当函数被多次调用时仍然会返回相同的结果。并且函数不会改变任何外部环境的变量,这将产生可缓存的、可测试的代码库。

1.1函数

函数是一段可以通过其名称被调用的代码。它可以传递参数并返回值。

var simple = (a) => {return a} // 一个简单的函数
simple(6) // 用其名称调用

1.2方法

方法是一段必须通过其名称以及其关联的对象的名称被调用的代码。

var obj = {
    simple : (a) => {return a}
}
obj.simple(5) // 用其名称以及其关联的对象的名称调用

二、函数式编程的特性

2.1引用透明性

遵循引用透明性的函数只能依赖来自参数的输入,而不会参杂全局引用。(换言之,函数就像一面镜子或一个恒等式)

var identity = (i) => {return i}
sum(4,5) + identity(1)
//根据引用透明性的定义,我们可以把上面的语句换为
sum(4,5) + 1

该过程被称为替换模型。引用透明性使并发代码缓存成为可能。

2.2声明式编程和编写抽象式代码

2.2.1用命令式方法遍历数组

var array = [1,2,3]
for(i=0;i<array.length;i++)
    console.log(array[i]) // 打印1,2,3

命令式编程会精确的告诉程序如何做。比如告诉编辑器“获取数组长度,循环数组,等”。

2.2.2用声明式方法遍历数组

var array = [1,2,3]
array.forEach((element) => console.log(element)) // 打印1,2,3

声明式编程只用告诉程序做什么。开发者只需要关心自己真的需要做什么,而不必过多纠结怎么做。