56 votes

Pourquoi JSLint se plaint-il "d '" inattendu "après" retour ""?

JSLint se plaint que le code suivant (exemple inutile) n'est pas valide:

 (function (x) {
    "use strict";
    if (x === 1) {
        return 1;
    } else if (x === 2) {
        return -1;
    }
    return 0;
}(1));
 

Erreur: Problème à la ligne 4, caractère 9: Inattendu, "après", "après".

retourne 1;

Cela suggère-t-il sérieusement qu'il est mauvais d'utiliser des instructions return dans une structure if / else?

Je pense que cette version est correcte:

 (function (x) {
    "use strict";
    var returnval = 0;
    if (x === 1) {
        returnval = 1;
    } else if (x === 2) {
        returnval = -1;
    }
    return returnval;
}(1));
 

92voto

georg Points 52691

Cela vous dit simplement que else après return est superflu. Ce qui suit est bien:

 (function (x) {
    "use strict";
    if (x === 1) {
        return 1;
    }  
    if (x === 2) {
        return -1;
    }
    return 0;
}(1));
 

4voto

Ce que j’ai découvert avec w / jslint, c’est que si vous respectez les règles, 50% sont ridicules sans pour autant avoir un impact négatif sur votre code. Les 50% restants (environ) vous donneront un bon bénéfice. Alors faites-le pour l'autre 50%. Cet exemple particulier vous oblige à être explicite sur l'inverse d'une condition ou similaire ... au lieu de le laisser être implicite avec un autre ... la même chose s'applique si / sinon je veux dire.

1voto

Jaseem Points 705

Il est préférable d'avoir une fonction qui retourne toujours quelque chose car cela ajoute de la cohérence. JSLint est connu pour être assez strict et blesser les programmeurs. Je ne peux pas l'aider. Personnellement, je pense que la version 1 est bien

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