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