# The JavaScript for..of loop

> Learn the JavaScript for..of loop, combining the conciseness of forEach with the ability to break and continue, plus getting the index with entries().

Author: Flavio Copes | Published: 2020-06-14 | Canonical: https://flaviocopes.com/javascript-for-of-loop/

The `for...of` loop is my favorite way to loop in [JavaScript](https://flaviocopes.com/javascript/).

It combines the conciseness of `forEach` loops with the ability to break.

The syntax is this:

```js
const list = ['a', 'b', 'c']

for (const item of list) {
  console.log(item)
}
```

You can break at any point in time using `break`:

```js
const list = ['a', 'b', 'c']

for (const item of list) {
  console.log(item)
  if (item === 'b') break
}
```

You can skip an iteration using `continue`:

```js
const list = ['a', 'b', 'c']

for (const item of list) {
  if (item === 'b') continue
  console.log(item)
}
```

You can get the index of an iteration using `entries()`:

```js
const list = ['a', 'b', 'c']

for (const [index, value] of list.entries()) {
  console.log(index) //index
  console.log(value) //value
}
```

Notice the use of `const`. The `for..of` loop creates a new scope in every iteration, so we can safely use that instead of `let`.
