JavaScript函数式编程

170 阅读1分钟

当一个函数被当作第一类成员(第一类公民)时,该函数既可以被声明为一个变量,还可以作为参数进行传递,也可以作为函数的执行结果被返回。

var log = function(message){
    console.log(message)
}
log("In JavaScript,functions are variables");

const log = message =>console.log("In JavaScript,functions are variables");

声明式编程

在声明式程序中,语法本身描述了将会发生什么,相关的执行细节被隐藏了:

const string = "This is the mid day show with Cheryl Waters";
const urlFriendly = string.replace(//g,"-");

使用string.replace方法和正则表达式,将字符串中的空格替换成连字符,如何处理空格替换的细节被抽象封装到了replace()函数内部。

函数式编程基本概念

不可变性

在函数式编程中,数据不可变。

纯函数

纯函数是一个返回结果只依赖于输入参数的函数;纯函数至少需要接收一个参数并且总是返回一个值或者其他函数;纯函数不会产生副作用,不修改全局变量或者任何应用程序的state。

数据转换

Array.map()、Array.reduce()、Array.join()、Array.filter()

高阶函数

递归