纯函数是什么?它和子程序有什么区别?优点在哪?
纯函数的定义是,对于相同的输入,永远会得到相同的输出,而且没有任何可观察的副作用,也不依赖外部环境的状态。
手写一个柯里化函数
- 以理解所谓的柯里化函数,就是封装一系列的处理步骤,通过闭包将参数集中起来计算,最后再把需要处理的参数传进去。
- 实现原理就是用闭包把传入参数保存起来,当传入参数的数量足够执行函数时,就开始执行函数。
```javascript
const { log } = console;
//调用curry函数,获取函数func的参数
function curry(func) {
//定义一个新的函数curried,接收参数为…args
return function curried(…args) {
} }//判断新函数接收的参数长度是否大于等于func剩余参数所接收的数量
if(args.length >= func.length) return func(...args);
//否则 返回一个新的匿名函数,这个函数吧所有传入参数...args保存在otherArgs种
return function curriedOtherFunc(...otherArgs) {
return curried(...args,...otherArgs)
}
```
- 手写一个管道函数
- 手写一个记忆函数
- 使用函数式手写一道算法题