美文网首页深入JavaScript
深入JavaScript Day07 - 纯函数、柯里化、组合函

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

作者: 望穿秋水小作坊 | 来源:发表于2022-01-14 11:03 被阅读0次

一、纯函数

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

相关文章

网友评论

    本文标题:深入JavaScript Day07 - 纯函数、柯里化、组合函

    本文链接:https://www.haomeiwen.com/subject/gxkacrtx.html