javascript函数式编程(一)

  javascript函数式编程在最近两年来频繁的出现在大众的视野,越来越多的框架(react,angular,vue等)标榜自己使用了函数式编程的特性,好像一旦跟函数式编程沾边,就很高大上一样,而且还有一些专门针对函数式编程的框架和库,比如:RxJS、cycleJS、ramdaJS、lodashJS、underscoreJS等。近年来随着技术的发展,函数式编程已经在实际生产中发挥巨大的作用了,越来越多的语言开始加入闭包,匿名函数等非常典型的函数式编程的特性,从某种程度上来讲,函数式编程正在逐步“同化”命令式编程。所以这里有必要介绍一下函数式编程的知识和特性。

二、纯函数(函数式编程的基石)

  如果你还记得一些初中数学知识的话,函数f的定义就是,对于输入x产生一个输出y=f(x)。这便是一种最简单的纯函数。所以纯函数的定义是:即对于相同的输入,永远会得到相同的输出,而且没有任何可观察的副作用。

  副作用可能包含,但不限于:

  1.更改文件系统
  2.往数据库插入记录
  3.发送一个 http 请求
  4.可变数据
  5.打印/log
  6.获取用户输入
  7.DOM 查询
  8.访问系统状态

  下面举个栗子,比如在javascript中对数组的操作,有些是纯的,有些是不纯的:

var xs = [1,2,3,4,5]; // 纯的 xs.slice(0,3); //=> [1,2,3] xs.slice(0,3); //=> [1,2,3] xs.slice(0,3); //=> [1,2,3] // 不纯的 xs.splice(0,3); //=> [1,2,3] xs.splice(0,3); //=> [4,5] xs.splice(0,3); //=> []

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsswzz.html