函数式编程

https://www.cnblogs.com/feichengwulai/archive/2014/03/29/3632219.html

1.定义

它属于"结构化编程"的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。举例来说,现在有这样一个数学表达式:

(1 + 2) * 3 - 4

传统的过程式编程,可能这样写:

 var a = 1 + 2;

  var b = a * 3;

  var c = b - 4;

函数式编程要求使用函数,我们可以把运算过程定义为不同的函数,然后写成下面这样:

var result = subtract(multiply(add(1,2), 3), 4);

2、特点

(1)函数是"第一等公民"

所谓"第一等公民"(first class),指的是函数与其他数据类型一样,处于平等地位,可以赋值给其他变量(var result = subtract(multiply(add(1,2), 3), 4);),也可以作为参数,传入另一个函数,或者作为别的函数的返回值。

(2)只用"表达式",不用"语句"()

(3)没有"副作用"(单一职责,只做一件事,避免耦合关联。)

(4)不修改状态

(5)引用透明

原文地址:https://www.cnblogs.com/mengfangui/p/9199708.html