前端拾遗01|从前端函数式编程开始
函数式编程是什么呢?是一种编程范式,比较经典的函数式语言有 Haskell ,实际上 JacaScript 本身作为一门多范式的语言也是支持函数式的。
函数式具有五个鲜明的特点:
函数是一等公民
Lambda表达式
纯函数,也叫没有副作用,不影响外部变量
不修改外部状态
引用透明,只依赖于输入的参数
来看一个例子
const arguments = ['qiupu'];
const callName = name => {
console.log(arguments[0])
}
const callRealName = function(name) {
console.log(arguments[0])
}
callName('knight'); // qiupu
callRealName ('knight'); // knight
这就是典型的上下文透传的例子。
数组里有一些方法可以实现类似Lodash库的语句组合形式,如链式调用、函数作为参数调用,也可以做一些控制语句代替for/while等。
来看一个例子
在JSX中我们常常看到这样的用法
const menu = (
<div>
{
props.post.filter(item =>item.name).map(item=>{
return <div key={item.id}>{item.name}<div>
})
}
</div>
)
这里常见的map、filter等就是常见的 组合子 的包装。