Référence de JavaScript 1.5 Core:Instructions:for...in
Un article de MDC.
Sommaire |
[modifier] Résumé
Fait évoluer une variable spécifiée pour parcourir toutes les propriétés d'un objet, dans un ordre arbitraire. Pour chaque propriété distincte, l'instruction spécifiée est exécutée.
| Instruction | |
| Implémentation : | JavaScript 1.0, NES 2.0 |
| Version ECMA : | ECMA-262 |
[modifier] Syntaxe
for (variable in objet) instruction
for (var variable in object) instruction
[modifier] Paramètres
-
variable - Variable prenant successivement la valeur de chaque propriété, éventuellement déclarée à l'aide du mot-clé
var. Cette variable est globale ou locale à la fonction et non à la boucle. (En d'autres mots, lorsque la boucle est finie, la variable conserve la valeur de la dernière propriété examinée.)
-
objet - Objet dont les propriétés sont parcourues.
-
instruction - Une instruction à exécuter pour chaque propriété. Pour exécuter plusieurs instructions dans la boucle, utilisez un bloc (
{ … }) pour les regrouper.
[modifier] Description
Une boucle for...in ne parcourt pas les propriétés natives des objets. Parmi ces propriétés natives, la méthode indexOf de String ou la méthode toString d'Object. Cependant, la boucle parcourra toutes les propriétés définies par l'utilisateur (y compris celles qui écrasent des propriétés natives).
Une boucle for...in parcourt les propriétés d'un objet dans un ordre arbitraire. Si une propriété est modifiée dans une itération et ensuite visitée plus tard, la valeur visible depuis la boucle sera la nouvelle valeur. Une propriété qui a été supprimée avant d'être visitée ne sera donc pas visitée plus tard. Les propriétés ajoutées à l'objet au cours d'une itération peuvent être visitées ou non au cours des itérations suivantes. En général, il est préférable de ne pas ajouter, modifier ou supprimer des propriétés de l'objet au cours de l'itération à part celle qui est actuellement visitée ; il n'y a aucune garantie concernant le moment de la visite d'une propriété modifiée (avant ou après sa modification) ou du fait qu'une propriété modifiée ait pu être déjà visitée ou non.
Bien qu'il puisse être tentant d'utiliser cette boucle pour parcourir un objet Array, c'est une mauvaise idée. L'instruction for...in parcourt les propriétés définies en plus des éléments du tableau, donc si vous modifiez les propriétés non entières ou non positives du tableau (par exemple en ajoutant une propriété "foo" ou même en ajoutant une méthode ou propriété à Array.prototype), l'instruction for...in renverra le nom de vos propriétés personnalisées en plus des indices numériques du tableau. De plus, comme l'ordre de parcours est arbitraire, rien ne dit que les éléments seront visités dans leur ordre numérique. C'est pourquoi il est préférable d'utiliser une boucle for traditionnelle avec un indice numérique pour parcourir un tableau.
[modifier] Exemples
[modifier] Exemple : utilisation de for...in
La fonction suivante reçoit un objet et son nom en paramètres. Elle parcourt ensuite les propriétés de l'objet et renvoie une chaîne listant les noms de propriétés et leurs valeurs.
function show_props(obj, nomObj) {
var resultat = "";
for (var i in obj) {
resultat += nomObj + "." + i + " = " + obj[i] + "\n";
}
return resultat;
}
[modifier] Voir aussi
- for each...in — semblable à
for...in, mais parcourt les valeurs des propriétés d'un objet plutôt que les noms de ces propriétés. (nouveau dans JavaScript 1.6.) - for