SyntaxError: for-in loop head declarations may not have initializers

Message

SyntaxError: for-in loop head declarations may not have initializers (Firefox)

SyntaxError: for-in loop variable declaration may not have an initializer. (Chrome)

Type d'erreur

SyntaxError, uniquement en mode strict.

Quel est le problème ?

L'en-tête d'une boucle for...in contient une expression d'initialisation, c'est-à-dire qu'une variable est déclarée et qu'on lui affecte une valeur. Ceci n'est pas autorisé en mode strict (et ignoré en mode non-strict).

Exemples

Cet exemple déclenchera une exception SyntaxError :

"use strict";

var obj = {a: 1, b: 2, c: 3 }; 

for (var i = 0 in obj) { 
  console.log(obj[i]);
}

// SyntaxError: for-in loop head declarations may not have initializers

Boucle for-in valide

On peut retirer l'initialisateur de l'en-tête de la boucle :

"use strict";

var obj = {a: 1, b: 2, c: 3 };

for (var i in obj) {
  console.log(obj[i]);
}

Parcours d'un tableau

Il ne faut pas utiliser de boucle for...in pour parcourir un tableau (Array). Peut-être souhaitiez-vous utiliser une boucle for pour parcourir le tableau ? Cette boucle for permet également d'utiliser un initialisateur :

var arr = [ "a", "b", "c" ] 

for (var i = 2; i < arr.length; i++) { 
  console.log(arr[i]); 
}

// "c"

Voir aussi

  • for...in
  • for...of interdit également d'utiliser un initialisateur en mode strict et non-strict
  • for permet de définir un initialisateur lors de l'itération et doit être privilégié pour parcourir un tableau

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : SphinxKnight
 Dernière mise à jour par : SphinxKnight,