---
hide_title: false
hide_table_of_contents: false
pagination_next: null
pagination_prev: null
---
# Map.prototype.forEach()

The **`forEach()`** method executes a provided function once per each key/value
pair in the `Map` object, in insertion order.

## Syntax

```js
// Arrow function
forEach(() => { /* … */ } )
forEach((value) => { /* … */ } )
forEach((value, key) => { /* … */ } )
forEach((value, key, map) => { /* … */ } )

// Callback function
forEach(callbackFn)
forEach(callbackFn, thisArg)

// Inline callback function
forEach(function() { /* … */ })
forEach(function(value) { /* … */ })
forEach(function(value, key) { /* … */ })
forEach(function(value, key, map) { /* … */ })
forEach(function(value, key, map) { /* … */ }, thisArg)
```

### Parameters

- `callbackFn`
  - : Function to execute for each entry in the map. It takes the following
    arguments:
    - `value` _**optional**_
      - : Value of each iteration.
    - `key` _**optional**_
      - : Key of each iteration.
    - `map` _**optional**_
      - : The map being iterated.
- `thisArg` _**optional**_
  - : Value to use as `this` when executing `callback`.

### Return value

[`undefined`](../../../globals/undefined.mdx).

## Description

The `forEach` method executes the provided `callback` once for each key of the
map which actually exist. It is not invoked for keys which have been deleted.
However, it is executed for values which are present but have the value
`undefined`.

`callback` is invoked with **three arguments**:

- the entry's `value`
- the entry's `key`
- the **`Map` object** being traversed

If a `thisArg` parameter is provided to `forEach`, it will be passed to
`callback` when invoked, for use as its `this` value. Otherwise, the value
`undefined` will be passed for use as its `this` value. The `this` value
ultimately observable by `callback` is determined according to
[the usual rules for determining the `this` seen by a function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/this).

Each value is visited once, except in the case when it was deleted and re-added
before `forEach` has finished. `callback` is not invoked for values deleted
before being visited. New values added before `forEach` has finished will be
visited.
