# 章序号/节序号/节/笔记序号
codecademy, Iterators
# 概念阐释
## 语义
- **`forEach()`** 方法对**数组的每个元素**执行一次**给定的函数**。
- 代替的是**loop循环**的写法
- return undefined???
## 语法
`array1.forEach(element => console.log(element));`
```js
**// 内联回调函数
arrayName.forEach(function(element) { /* … */ })
```
- *正在处理的元素随便任意命名,可以为element;可以为单数数组变量名,更贴近语义。*
# 举例子

```js
//返回结果
- brown sugar
- salt
- cranberries
- walnuts
/*回忆:const groceries = function(item) {
return ',,,,,'
}*/
```
### 箭头写法
```js
groceries.forEach(groceryItem => console.log(groceryItem));
/*回忆:const groceries = item => return ',,,,'*/
```
### 先定义函数再回调函数
```js
function printGrocery(element){
console.log(element);
}
groceries.forEach(printGrocery);
/* 回忆 function groceries(item){
return ',,,,,'
};*/
```
# 类比、比较与对比
### 将for 循环转换为forEach
```js
const items = ['item1','item2','item3'];
const copyItems =[];
for (let i = 0; i< items.length;i++){
copyItem.push(item[i]);
}
items.forEach(
function(item)=>{
copyItem.push(item);
}
);
```
- `.forEach()` 使用的`item`是指数组中正在处理的当前元素
# 问题
用`.forEach` 循环这个数组。用箭头函数和内联函数两种写法写。
```js
const fruits = ['mango', 'papaya', 'pineapple', 'apple'];
```
# 问题答案
```js
// Iterate over fruits below
fruits.forEach(function(fruitItem){
console.log(`I want to eat a ${fruitItem}`);
});
fruits.forEach((fruitItem) => console.log(`I want to eat a ${fruitItem}`))
```
# 备注(经验集/错误集)
## 经验集
## 错误集
当forEach中使用函数时,应传入一个函数,而不是调用函数。[[js DOM 练习题 钢琴键]]

## 参考资料
[Array.prototype.forEach()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach)