3
votes

Besoin d'un correctif pour l'erreur EsLint: parenthèses gratuites autour de l'expression-no-extra-parens

J'obtiens une erreur lorsque j'exécute ESLint sur mon code JavaScript.

var crslWt = 100;
var totCrslWt = (crslWt/2)-20;

J'obtiens une erreur

Parenthèses gratuites autour de l'expression no-extra-parens


11 commentaires

Puis supprimez les parenthèses pour se conformer à la règle?


Ce n'est pas comme si le code contenait une abondance de parenthèses. Il n'est pas difficile de savoir à quelle paire il fait référence.


Si je supprime les parenthèses dans quel ordre la priorité des opérateurs fonctionne?


@crazyarun - Avez-vous essayé en cherchant ou en espérant que le linter est correct quand il dit que les parenthèses sont gratuites?


Première division, puis soustraction. ESLint en est conscient, c'est pourquoi vous obtenez l'erreur. Si le code était crslWt / (2-20); alors la suppression des crochets modifie la signification et ESLint n'émettra pas de violation de règle.


Ici (crslWt / 2) - 20; je viens de donner la priorité à l'ordre de calcul.


(crslWt / 2) - 20 et crslWt / 2 - 20 sont identiques en termes d'exécution et de résultat. C'est pourquoi les parenthèses sont redondantes et vous obtenez ainsi la violation de règle d'ESLint.


oh ... merci mec .. @vlaz


Des parenthèses @vlaz sont ajoutées pour gagner en lisibilité et il est très courant de voir ce formatage dans n'importe quel langage de programmation (même les exercices de mathématiques scolaires, bien que les règles en mathématiques soient les mêmes)


@ MosèRaguzzini Je le sais mais si la règle est activée, alors le style de code interdit de faire cela. Par conséquent, pour se conformer au guide de style, les paranthèses doivent être supprimées. Cela, à son tour, ne changerait pas le sens de l'expression. Je ne sais pas pourquoi vous avez choisi de clarifier quelque chose qui n'était pas en question ici.


@vlaz la question indique «Besoin de corriger l'erreur eslint ..» afin que vous puissiez corriger soit linter, soit le code. Le code Bacause doit être aussi lisible que possible, je préférerais réparer le linter, c'est tout.


3 Réponses :


-1
votes

Supprimez simplement les parenthèses autour de crslWt / 2 .

/ opérateur a priorité sur - , donc les parenthèses dans ce cas sont techniquement redondantes


1 commentaires

Parfois, ce n'est pas immédiatement clair et des parenthèses supplémentaires sont utiles pour accélérer la lecture.



1
votes

Il semble que vous deviez appliquer l'option {"nestedBinaryExpressions": false} .

Depuis documentation officielle :

Exemples de code correct pour cette règle avec "tous" et { "nestedBinaryExpressions": false} options:

/* eslint no-extra-parens: ["error", "all", { "nestedBinaryExpressions": false }] */

x = a || (b && c);
x = a + (b * c);
x = (a * b) / c;


0 commentaires

3
votes

Dans Visual Studio:

 entrez la description de l'image ici

Remplacez la ligne suivante:

"no-extra-parens": 0,

par

"no-extra-parens": 1,


1 commentaires

Le simple fait de supprimer les parenthèses résoudra le problème, mais parfois vous voulez des parenthèses pour plus de clarté. Par exemple un || (b && c) provoquera l'avertissement, mais a || b && c ne semble pas aussi clair pour certaines personnes (y compris moi-même). Oui, les parents sont extra, mais leur ajout clarifie la déclaration au lecteur.