这是我参与更文挑战的第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
}
}
下一篇,让我们了解函数的柯里化,并在实际运用中的例子