La différence (vitesse, performances, effets secondaires, ...) entre les implémentations de la boucle for :

Entre

var i;
for(i = 0; i < length; i++){ //Do something}
// more code

Et

for(var i = 0; i < length; i++){ //Do something}
// more code

Et

for(i = 0; i < length; i++){ //Do something}
// more code

Et entre

var e;
for( e in array){ //Do something}
// more code

Et

for(var e in array){ //Do something}
// more code

Et

for(e in array){ //Do something}
// more code
0
rkmax 31 oct. 2011 à 06:41

3 réponses

Meilleure réponse

Il n'y a pas de différence.

Les variables JavaScript n'ont qu'une portée de fonction, et bien que vous puissiez placer une instruction var dans la partie d'initialisation d'une boucle for en réalité, la déclaration est "hoisted" en haut de la portée de sorte que lorsque vos seconds exemples de cas s'exécutent, ils soient traités exactement comme les premiers cas.

MODIFIER: puisque vous avez mis à jour la question après que j'ai répondu, la troisième syntaxe que vous avez ajoutée lorsque vous n'utilisez pas le mot clé var signifie la variable {{X1 }} (ou e) sera créé en tant que global - sauf s'il existe déjà en tant que global, auquel cas la variable existante sera écrasée. L'accès aux variables globales est plus lent que l'accès aux variables locales.

REMARQUE: mon interprétation de la question est qu'il ne s'agit pas de comparer un standard pour la boucle avec la variante for..in, il suffit de comparer les différentes méthodes de déclaration de variable les unes avec les autres pour un standard pour la boucle, puis de refaire la même chose pour un for..in loop.

2
nnnnnn 31 oct. 2011 à 02:54

Il n'y a pas de différence par rapport à la déclaration de votre variable compteur.

MAIS TOUJOURS DÉCLARER VOS VARIABLES AVEC var

Sinon, ils polluent la portée mondiale déjà sale de Javascript ...

En ce qui concerne for...in vs traditionnel for regardez ici ...

( Quelle est ma réponse à la question en double ... )

2
Community 23 mai 2017 à 12:27

Oui, il existe une différence entre la boucle for et la boucle for / in en javascript. Voici ce qui est différent

Considérez ce tableau

var myArr = ["a", "b", "c"];

Plus tard, j'ajoute un élément à ce tableau, mais d'une manière différente, comme ceci:

myArr[myArr.length + 1] = "d";

À ce stade, voici à quoi ressemble le tableau, si vous le console.log

["c", "b", "a", undefined × 1, "d"]

Maintenant, passons en revue le tableau en utilisant la boucle for et for / in et voyons quelle est la différence: d'abord, essayons la boucle for

for(var i = 0; i != myArr.length; i++) {     // note, i used " != " instead of " < ". Yes this is faster.
  console.log(myArr[i]);
}
// output will look like this:
// "a" 
// "b" 
// "c"
// undefined × 1
// "d" 
// - This still shows the undefined value in the array.

Maintenant, regardons la boucle for / in

for(key in myArr) {
  console.log(myArr[key]);
}
// array will look like:
// "a"
// "b"
// "c"
// "d"
// This will skip the undefined value.

Différence 1 : l'interpréteur javascript ignorera toutes les valeurs nulles ou non définies lors de l'utilisation de la boucle for / in. De plus, la boucle for / in convertira toutes les valeurs si elle rencontre une valeur primitive, en son objet wrapper équivalent. Alors que la boucle for ne fait pas cela.

Différence 2 : lors de l'utilisation de la boucle for, nous avons déclaré la variable i dans la boucle, cette variable sera portée dans une fonction, si la boucle for est écrite dans cette fonction. Ce qui signifie que jusqu'à la fin de la fonction, la variable i est toujours disponible, même en dehors de la boucle for, mais dans cette fonction. Dans le cas où, dans le cas de la boucle for / in, la portée de la variable "key" s'éteint immédiatement après l'arrêt de l'exécution de la boucle for / in, ce qui signifie qu'il y a moins d'utilisation de la mémoire.

0
kaizer1v 27 sept. 2014 à 18:55