Obsolète
Cette fonctionnalité a été supprimée des standards du Web. Bien que quelques navigateurs puissent encore la supporter, elle est en cours d'éradication. Ne l'utilisez ni dans d'anciens projets, ni dans de nouveaux. Les pages et applications Web l'utilisant peuvent cesser de fonctionner à tout moment.
L'instruction for each...in est dépréciée car elle appartient au standard ECMA-357 (E4X). E4X sera désactivé par défaut puis retiré à l'avenir mais l'instruction for each...in ne sera pas désactivée puis retirée afin de respecter une certaine rétro-compatibilité. Il faut désormais utiliser l'instruction for...of
. (Voir bug 791343.)
Firefox lance désormais des avertissements lorsque des boucles for each...in
. Veuillez voir l'article sur cet avertissement pour des indications quant aux solutions de migration.
L'instruction for each...in
itère une variable donnée sur toutes les propriétés d'un objet. Pour chaque propriété distincte, une instruction spécifique est exécutée.
Syntaxe
for each (variable in objet) { instruction }
variable
- Une variable à itérer sur les valeurs des propriétés, elle peut être déclarée avec le mot-clé
var
. Cette variable est locale à la fonction et non à la boucle.
objet
- L'objet pour lequel les propriétés sont itérées.
instruction
- Une instruction à exécuter pour chaque propriétés. Pour effectuer plusieurs instructions au sein de la boucle, il faut utiliser une instruction de bloc (
{ ... }
) pour regrouper les instructions.
Description
L'itération ne s'effectue que sur les propriétés spécifiques, définies par l'utilisateur. Elle ne s'effectuera pas sur les propriétés implicites déjà intégrées comme les méthodes objet telles que la méthode indexOf
des chaînes de caractères.
Exemple
Utiliser for each...in
Attention : Ne jamais utiliser cette boucle sur un tableau. Ne l'utiliser que pour les objets. (Voir des détails sur la page de l'instruction Instructions/for...in
).
Le fragment de code parcourt les propriétés d'un objet et en calcule leur somme.
var somme = 0; var obj = {prop1: 5, prop2: 13, prop3: 8}; for each (var item in obj) { somme += item; } console.log(somme); // affiche "26", ce qui correspond à 5+13+8
Spécifications
Cette instruction ne fait partie d'aucune spécification ECMA-262. Elle a été implémentée avec JavaScript 1.6 et est dépréciée.
Compatibilité des navigateurs
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Support simple | Pas de support | 1.5 (1.8) | Pas de support | Pas de support | Pas de support |
Fonctionnalité | Android | Chrome pour Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Support simple | Pas de support | Pas de support | 1.0 (1.0) | Pas de support | Pas de support | Pas de support |