58 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: 587d7b8e367417b2b2512b5c
title: 了解函数式编程术语
challengeType: 1
forumTopicId: 301240
---
# --description--
FCC 团队需求有变更现在想要两种茶绿茶green tea和红茶black tea。事实证明用户需求变更是很常见的。
基于以上信息,我们需要重构上一节挑战中的`getTea`函数来处理多种茶的请求。我们可以修改`getTea`接受一个函数作为参数,使它能够修改茶的类型。这让`getTea`更灵活,也使需求变更时为程序员提供更多控制权。
首先,我们将介绍一些术语:
`Callbacks`是被传递到另一个函数中调用的函数。你应该已经在其他函数中看过这个写法,例如在`filter`中,回调函数告诉 JavaScript 以什么规则过滤数组。
函数就像其他正常值一样,可以赋值给变量、传递给另一个函数,或从其它函数返回,这种函数叫做`头等`函数。在 JavaScript 中,所有函数都是`头等`函数。
将函数为参数或返回值的函数叫做`高阶`函数。
当函数传递给另一个函数或从另一个函数返回时,那些传入或返回的函数可以叫做`lambda`
# --instructions--
准备 27 杯绿茶和 13 杯红茶,分别存入`tea4GreenTeamFCC``tea4BlackTeamFCC`变量。请注意,`getTea`函数已经变了,现在它接收一个函数作为第一个参数。
注意:数据(茶的数量)作为最后一个参数。我们将在后面的课程中对此进行更多讨论。
# --hints--
`tea4GreenTeamFCC`变量应存有为团队准备的 27 杯茶。
```js
assert(tea4GreenTeamFCC.length === 27);
```
`tea4GreenTeamFCC`变量应存有绿茶。
```js
assert(tea4GreenTeamFCC[0] === 'greenTea');
```
`tea4BlackTeamFCC`变量应存有 13 杯红茶。
```js
assert(tea4BlackTeamFCC.length === 13);
```
`tea4BlackTeamFCC`变量应存有红茶。
```js
assert(tea4BlackTeamFCC[0] === 'blackTea');
```
# --solutions--