---
title: 你能描述一个 `.forEach` 循环和 `.map()` 循环之间的主要差异吗？
subtitle: 这两者你会如何选择？
---

为了理解两者之间的差异，让我们看看每个函数做什么。

## `forEach`

- 通过数组中的元素进行迭代。
- 对每个元素执行回调。
- 不返回值。

```js
const a = [1, 2, 3];
const doubled = a.forEach((num, index) => {
  // 使用 num 和 index 做点什么
});

// doubled = undefined
```

## `map`

- 通过数组中的元素进行迭代。
- 通过在每个元素上调用函数，将每个元素 "映射 "到一个新的元素上，并作为结果创建一个新的数组。

```js
const a = [1, 2, 3];
const doubled = a.map((num) => {
  return num * 2;
});

// doubled = [2, 4, 6]
```

`.forEach` 和 `.map()` 之间的主要区别是`.map()` 返回一个新数组。 如果你需要结果，但不想改变原始数组，`.map()`是一个明确的选择。 如果你只需遍历一个数组，`forEach`就是一个很好的选择。
