前端学习之函数式编程—函数式编程概念+头等函数
Posted 萌萌的DDD
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端学习之函数式编程—函数式编程概念+头等函数相关的知识,希望对你有一定的参考价值。
什么是函数式编程
函数式编程(function programming FP)FP是编程范式之一,我们常听说的还有,面向过程编程,面向对象编程
函数式编程的思维方式
把现实世界的事物和事物之间的联系抽象到程序世界(对运算过程进行抽象)
注意:函数式编程中的函数并不是指程序中的函数(或调用的方法),并不是你在开发过程中使用了函数就叫做函数式编程。
函数式编程则代表的是映射关系
例如:
y=sin(x)
当我在数学中的sin函数中,输入x值为1时,y值必定也等于1,映射了x和y轴的关系
所以函数式编程代表的是相同的输入始终要得到相同的输出
函数式编程没有可变的变量、循环等这些命令式编程方式中的元素,像数学里的函数一样,对于给定的输入,不管你调用该函数多少次,永远返回同样的结果。
// 非函数式编程
let num1 = 1
let num2 = 2
let sum = num1 + num2
console.log(sum) // 3
// 函数式编程
function add(num1 , num2){
return num1 + num2
}
let sum = add(1,2)
console.log(sum) // 3
函数是一等公民(头等函数)
MDN First Class Function
https://developer.mozilla.org/zh-CN/docs/Glossary/First-class_Function
所谓一等公民是指,函数与我们平时所使用的其他数据类型地位一样
- 函数可以储存到变量中
- 函数可以作为参数
- 函数可以作为返回值
在javascript中函数就是一个普通的对象,因此可以吧函数储存到变量/数组中,并且可以作为另一个函数的参数和返回值。
// 把函数赋值给变量
let fn = function () {
console.log('first class function')
}
fn()
// 把函数赋值给数组
let arr = [fn]
arr[0]()
// 示例
const Controller = {
index(posts) { return Views.index(posts)},
create(posts,gets) { return Db.create(posts,gets) }
}
// 优化
const Controller = {
index:Views.index,
create:Db.create,
}
Controller.index()
Controller.create
对象中赋值的并不是方法的调用,而是方法本身。
体现了函数一等公民的特性,在对象中作为返回值以及储存到变量的特点。
以上是关于前端学习之函数式编程—函数式编程概念+头等函数的主要内容,如果未能解决你的问题,请参考以下文章