Question

Quelle est la différence entre les instructions for..in et for each..in en javascript? Y a-t-il une différence subtile que je ne connais pas ou est-ce la même chose et chaque navigateur porte un nom différent?

Était-ce utile?

La solution

"for for ... in" itère une variable spécifiée sur toutes les valeurs des propriétés de l'objet spécifié.

Exemple:

var sum = 0;
var obj = {prop1: 5, prop2: 13, prop3: 8};
for each (var item in obj) {
  sum += item;
}
print(sum); // prints "26", which is 5+13+8

Source

"for ... in" itère une variable spécifiée sur toutes les propriétés d'un objet, dans un ordre arbitraire.

Exemple:

function show_props(obj, objName) {
   var result = "";
   for (var i in obj) {
      result += objName + "." + i + " = " + obj[i] + "\n";
   }
   return result;
}

Source

Note 03.2013, pour chaque ... boucle est obsolète . La nouvelle syntaxe recommandée par MDN est < code> pour ... sur .

Autres conseils

Cette démonstration devrait, espérons-le, illustrer la différence.

var myObj = {
    a : 'A',
    b : 'B',
    c : 'C'
};
for each (x in myObj) {
    alert(x);        // "A", "B", "C"
}
for (x in myObj) {
    alert(x);        // "a", "b", "c"
    alert(myObj[x]); // "A", "B", "C"
}

Lisez l'excellente documentation MDC.

Le premier est normal boucle sur les collections et arbitrairement sur les propriétés d'un objet.

  

Une boucle for ... in n'itère pas les propriétés intégrées. Celles-ci incluent toutes les méthodes d'objets intégrées, telles que la méthode indexOf de String ou la méthode toString de Object. Cependant, la boucle itérera sur toutes les propriétés définies par l'utilisateur (y compris celles qui écrasent les propriétés intégrées).

     

Une boucle for ... in parcourt les propriétés d'un objet dans un ordre arbitraire. Si une propriété est modifiée en une itération puis visitée ultérieurement, la valeur exposée par la boucle sera sa valeur à cette heure ultérieure. Une propriété supprimée avant la visite ne sera pas visitée ultérieurement. Les propriétés ajoutées à l'objet sur lequel l'itération est en cours peuvent être visitées ou omises de l'itération. En général, il est préférable de ne pas ajouter, modifier ou supprimer des propriétés de l'objet pendant l'itération, autres que la propriété en cours de visite; il n'y a aucune garantie quant à savoir si une propriété ajoutée sera visitée ou non, si une propriété modifiée sera visitée avant ou après sa modification, ou si une propriété supprimée le sera avant son effacement.

Le ce dernier vous permet de passer en boucle. les propriétés d'un objet.

  

Itère une variable spécifiée sur toutes les valeurs des propriétés de l'objet. Pour chaque propriété distincte, une instruction spécifiée est exécutée.

Outre les autres réponses, n'oubliez pas que pour chaque ... dans ne fait pas partie du standard ECMA et qu'il n'est pas non plus inclus dans le fichier prochaine version 3.1 . Il a été introduit dans JavaScript 1.6, qui est une extension de ECMAScript3 par la fondation Mozilla.

Selon la page liée à Wikipedia, il n'est implémenté que dans Firefox 1.5+ et Safari 3.x (+?).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top