一、纯函数
1、什么是纯函数?
- 确定的输入,一定会产生确定的输出;
- 函数在执行过程中,不能产生副作用;
2、副作用的英文是什么?为什么程序产生副作用不好?
- side effect
- 【副作用往往是产生bug的"温床"】
3、纯函数的优势?
image.png image.png二、柯里化
1、什么是柯里化?有什么用?
- 让函数的职责变得更加单一
2、利用柯里化思想,实现add5函数?
- 如果我们有一个add功能,每次都是x加上五,我们的代码可能如下
function sum(num1, num2) {
return num1 + num2;
}
console.log(sum(5, 10));
console.log(sum(5, 20));
console.log(sum(5, 30));
console.log(sum(5, 40));
- 柯里化后
function makeAdd(num1) {
return function (num2) {
return num1 + num2;
};
}
var add5 = makeAdd(5);
console.log(add5(10));
console.log(add5(20));
console.log(add5(30));
console.log(add5(40));
- 这样就让函数功能更加单一了
三、组合函数
1、什么是组合函数?
-
让多个函数按照固定的顺序进行执行
image.png
2、组合函数的例子?
- 未使用组合函数
function work(name) {
return name + "先工作,";
}
function eat(name) {
return name + "先吃饭,";
}
function sleep(name) {
return name + "最后工作,";
}
var result = sleep(eat(work("why")));
console.log(result);
- 使用组合函数,将函数组合起来,供给外部简单调用(门面模式)
function work(name) {
return name + "先工作,";
}
function eat(name) {
return name + "先吃饭,";
}
function sleep(name) {
return name + "最后工作,";
}
function compose(f1, f2, f3) {
return function (name) {
return f3(f2(f1(name)));
};
}
var flow = compose(work, eat, sleep);
console.log(flow("why"));
image.png
网友评论