147 votes

L'erreur "+++ inattendue ++" dans jslint

Quelle est la meilleure pratique pour cela alors?

Jslint explique que cela "ajoute de la confusion". Je ne le vois pas vraiment ...

EDIT: Le code, comme demandé:

   var all,l,elements,e;
  all = inElement.getElementsByTagName('*');
  l = all.length;
  elements = [];
  for (e = 0; e < l; (e++))
  {
    if (findIn)
    {
        if (all[e].className.indexOf(className) > 0)
        {
            elements[elements.length] = all[e];
        }
    } else {
        if (all[e].className === className)
        {
            elements[elements.length] = all[e];
        }
    }
  }
 

94voto

unomi Points 1846

ou simplement faire i += 1

88voto

Rico Sonntag Points 915

Ajoutez simplement /*jslint plusplus: true */ devant votre fichier javascript.

28voto

Sean Kinsey Points 17117

Pour éviter toute confusion, et problèmes possibles lors de l'utilisation de minifiers, toujours placer les parenthèses autour de l'opérateur et de son opérande lorsqu'il est utilisé avec le même (+ ou -).

var i = 0, j = 0;
alert(i++ +j);

Cela ajoute i et j (et incrémente i comme un effet secondaire) résultant en 0 et d'être au courant.

Mais qu'est-ce que quelqu'un arrive et se déplace de l'espace?

var i = 0, j = 0;
alert(i+ ++j);

Maintenant, cette première incrémente j, puis j'ajoute la nouvelle valeur de j, résultant en 1 être alerté.

Cela pourrait facilement être résolu en faisant

var i = 0, j = 0;
alert((i++) +j); 

Maintenant, cela ne peut pas se tromper.

13voto

Samir Talwar Points 9307

Personnellement, je préfère mettre des déclarations telles que i++ sur une ligne par eux-mêmes. Y compris dans le cadre d'une plus grande instruction peut causer de la confusion pour ceux qui ne sont pas sûr de ce que la ligne est censé être en train de faire.

Par exemple, au lieu de:

value = func(i++ * 3);

Je voudrais faire ceci:

value = func(i * 3);
i++;

Il signifie également que les gens n'ont pas à se rappeler comment i++ et ++i de travail, et supprime la nécessité d'appliquer tout à fait aussi beaucoup de règles de préférence.

9voto

benzonico Points 3082

Je suis assez surpris que personne n'a écrit quelque chose sur la programmation fonctionnelle aspect de javascript :

Le vrai problème de la ++ de l'opérateur, c'est qu'il est un opérateur avec des effets secondaires et il est donc totalement opposée à ce que le principe de la programmation fonctionnelle.

Le "fonctionnel" de façon à mettre en oeuvre i++ serait i = i+1 où vous avez explicitement réaffecter la variable, sans effets secondaires, et ensuite de l'utiliser.

La possibilité de confusion, ++ fait deux choses en ajoutant une valeur ET réattribution de la variable.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X