Skip to main content

学习函数式编程

【我的提交】

// 函数返回表示“一杯绿茶(green tea)”的字符串
const prepareTea = () => 'greenTea';

/*
有一个函数(代表茶的种类)和需要几杯茶,下面的函数返回一个数组,包含字符串(每个字符串表示一杯特别种类的茶)。
*/
const getTea = (numOfCups) => {
const teaCups = [];

for(let cups = 1; cups <= numOfCups; cups += 1) {
const teaCup = prepareTea();
teaCups.push(teaCup);
}
return teaCups;
};

// 只修改这一行下面的代码
const tea4TeamFCC = getTea(40);
// 只修改这一行上面的代码

【涉及的内容】

  • 函数编程范式

    • INPUT -> PROCESS -> OUTPUT
  • 函数编程好处

    1. 功能独立——不依赖于程序的状态(比如可能发生变化的全局变量);
    2. 纯函数——同一个输入永远能得到同一个输出;
    3. 有限的副作用——可以严格地限制函数外部对状态的更改。

了解函数式编程术语

【我的提交】

// 函数返回表示“一杯绿茶(green tea)”的字符串
const prepareGreenTea = () => 'greenTea';

// 函数返回表示“一杯红茶(black tea)”的字符串
const prepareBlackTea = () => 'blackTea';

/*
有一个函数(代表茶的种类)和需要几杯茶,下面的函数返回一个数组,包含字符串(每个字符串表示一杯特别种类的茶)。
*/
const getTea = (prepareTea, numOfCups) => {
const teaCups = [];

for(let cups = 1; cups <= numOfCups; cups += 1) {
const teaCup = prepareTea();
teaCups.push(teaCup);
}
return teaCups;
};

// 只修改这一行下面的代码
const tea4GreenTeamFCC = getTea(prepareGreenTea,27);
const tea4BlackTeamFCC = getTea(prepareBlackTea,13);
// 只修改这一行上面的代码

console.log(
tea4GreenTeamFCC,
tea4BlackTeamFCC
);

【涉及的知识点】

  • Callback:回调函数——被传递到另一个函数中调用的函数
  • 头等函数:函数就像其他正常值一样,可以赋值给变量、传递给另一个函数,或从其它函数返回。(在 JavaScript 中,所有函数都是头等函数)
  • 高阶函数:将函数作为参数或将函数作为返回值返回的函数
  • lambda:当函数被传递给另一个函数或从另一个函数返回时,那些传入或返回的函数