javascript函数式编程02-了解函数式编程

176 阅读1分钟

这是我参与更文挑战的第2天,活动详情查看: 更文挑战

紧跟上一篇 ,这一篇主要介绍函数的几个知识点,如:什么叫函数是一等公民、纯函数
函数是一等公民?
  • 函数式编程的基本理念是以函数为核心来组织代码,很自然的,它首先将函数的地位提高,视其为“第一等公民” (first class)。

  • 所谓一等公民,是指函数和其他数据类型拥有平等的地位,比如:

    • 函数可以赋值给变量
    • 函数可以被作为实参传递
    • 函数可以被另一个函数返回
    • 函数可以返回另一个函数
    • 函数可以作为形参
//定义
function greet(name) {
  return "Hi,I,m" +name
}
//返回另一个函数,可链式操作
function welcome(user){
  return function(string){
         return '欢迎'+user+' '+string
        }
}
var str = welcome('xiaoming')('来到中国')
=》 “欢迎xiaoming 来到中国”

纯函数
  • 纯函数:一个没有任何副作用,并且返回值只由输入决定的函数。
  • 副作用:如果一个函数,除了返回值之外,还会修改某些其它状态,或者与外部函数等有可观测的交互
//没有副作用 替换c为d
var rooms = ["a","b","c"]
var newRoomas = rooms.map(function(rm){
  if(rm == "c"){
  return "d"
}else{
 return rm;
}
})
newRooms =>["a","b","d"]
rooms =>["a","b","c"]
  • 另一个例子
// add 的非纯函数定义
var x = 5;
function add( y ){ return y + x }

// 如何定义一个纯函数
function addPure( x ){
  return function ( y ) {
     return y + x
  }
}
下一篇,让我们了解函数的柯里化,并在实际运用中的例子