for...of

Parcourt les valeurs successives d’un objet itérable : tableau, chaîne, Map, Set et autres.

Sur cette page

Exemple

#
JavaScript
const skills = ['HTML', 'CSS', 'JavaScript']

for (const skill of skills) {
  console.log(`J’apprends : ${skill}`)
}
Console
J’apprends : HTML
J’apprends : CSS
J’apprends : JavaScript

Définition et utilisation

#

La boucle for...of fournit à chaque tour la valeur suivante d’un objet itérable. Vous n’avez pas besoin de gérer un compteur ni d’accéder à l’élément par un indice, donc le code est plus court et il est plus difficile de faire une erreur « de décalage ».

Elle fonctionne avec les tableaux, les chaînes (caractère par caractère, sans couper les emoji en deux), les objets Map et Set, les listes de querySelectorAll() ou les générateurs. Un objet ordinaire {} n’est pas itérable, donc pour parcourir son contenu, utilisez Object.keys(), Object.values() ou Object.entries().

Contrairement à forEach(), dans for...of vous pouvez utiliser break, continue, return et await. Quand vous avez aussi besoin de l’indice, utilisez array.entries() avec la déstructuration : for (const [index, value] of array.entries()).

Syntaxe

#
Syntaxe
for (const element of iterable) {
  // instructions
}

Plus d’exemples

#
Indice et valeur avec entries()
JavaScript
const tasks = ['Variables', 'Boucles', 'Fonctions']

for (const [index, task] of tasks.entries()) {
  console.log(index, task)
}
Console
0 Variables
1 Boucles
2 Fonctions
Un objet avec Object.entries()
JavaScript
const scores = { Léa: 120, Lucas: 95 }

for (const [name, points] of Object.entries(scores)) {
  console.log(`${name} a ${points} pts`)
}
Console
Léa a 120 pts
Lucas a 95 pts
Une chaîne caractère par caractère
JavaScript
const word = 'Code👾'

for (const char of word) {
  console.log(char)
}

console.log(word.length)
Console
C
o
d
e
👾
6

for...of parcourt des caractères Unicode entiers, c’est pourquoi l’emoji est un seul élément, bien que length le compte comme 2.

Compatibilité des navigateurs

#

Largement disponible

Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.

  • Chrome
  • Edge
  • Firefox
  • Safari

Bonnes pratiques

#
  • for...of donne des valeurs, et for...in des clés. Pour les tableaux, vous voulez presque toujours for...of.
  • Avec await à l’intérieur de la boucle, les opérations s’exécutent les unes après les autres. Pour les lancer en parallèle, rassemblez les promesses dans un tableau et utilisez Promise.all().
  • Déclarez la variable de boucle avec const. Chaque tour reçoit une nouvelle variable, et un écrasement accidentel signalera immédiatement une erreur.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.