web-dev-qa-db-fra.com

Pourquoi JSLint se plaint-il de "Une autre" inattendue après "le 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: "else" inattendu après "return".

retour 1;

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

Il pense que cette version est très bien:

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

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

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

Ce que j'ai trouvé avec jslint, c'est que si vous respectez les règles - 50% sont ridicules mais n'ont aucun impact négatif sur votre code. Les 50% restants (ou plus) vous donneront un bon avantage. Faites-le pour les 50% restants. Cet exemple particulier vous oblige à être explicite sur l'inverse d'une condition ou similaire ... au lieu de le laisser implicite avec un autre ... la même chose s'applique à if/else je veux dire.

4
morph_master_flex

Il vaut mieux qu'une fonction renvoie toujours quelque chose car elle ajoute de la cohérence. JSLint est connu pour être assez strict et blesser les sentiments des programmeurs. Je ne peux pas l'aider. Personnellement, je pense que la version 1 est très bien

1
Jaseem