Maison >interface Web >js tutoriel >L'ordre de propriété de garantie de boucle « for...in » de JavaScript ?

L'ordre de propriété de garantie de boucle « for...in » de JavaScript ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-11 06:09:11451parcourir

Does JavaScript's `for...in` Loop Guarantee Property Order?

Ordre des éléments de boucle dans "pour (... dans ...)" Déclaration

Le "pour (... dans . ..)" La boucle en JavaScript est utilisée pour parcourir les propriétés d'un objet. La question se pose de savoir si ces propriétés sont traitées dans l'ordre dans lequel elles sont déclarées.

Selon John Resig, tous les principaux navigateurs maintiennent l'ordre de définition des propriétés des objets lors des itérations de boucle. Cependant, Chrome et Opera présentent une exception uniquement pour les noms de propriétés non numériques. Ces propriétés sont traitées avant la première propriété numérique dans les deux navigateurs.

Pour simplifier :

  • Les propriétés avec des noms numériques sont traitées dans l'ordre.
  • Les propriétés avec des noms non numériques -les noms numériques sont traités avant les propriétés numériques dans Chrome et Opera.

Pour exemple :

var obj = {
  "first": "first",
  "2": "2",
  "34": "34",
  "1": "1",
  "second": "second"
};
for (var i in obj) { console.log(i); };

Dans la plupart des navigateurs, le résultat sera :

1
2
34
first
second

Dans Chrome et Opera, le résultat sera :

1
2
34
first
second

Malgré le cohérence actuelle dans le comportement du navigateur, la spécification ECMAScript laisse la mécanique de la boucle indéfinie. Par conséquent, il n'est pas recommandé de se fier à l'ordre actuel.

Bonne pratique :

Si l'ordre est crucial pour votre application, il est conseillé d'utiliser un tableau au lieu d'un objet. avec une boucle "for (...) in ...)". Les tableaux préservent l'ordre des éléments de manière plus fiable.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn