深入JavaScript Day07 - 纯函数、柯里化、组合函数

一、纯函数

1、什么是纯函数?

  • 确定的输入,一定会产生确定的输出;
  • 函数在执行过程中,不能产生副作用;
image.png

2、副作用的英文是什么?为什么程序产生副作用不好?

  • side effect
  • 【副作用往往是产生bug的"温床"】
image.png

3、纯函数的优势?

image.png
image.png

二、柯里化

1、什么是柯里化?有什么用?

  • 让函数的职责变得更加单一
image.png
image.png

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容