web-dev-qa-db-fra.com

Attendu un appel d'affectation ou de fonction et a plutôt vu une expression

Je suis totalement cool avec cette JSLint error. Comment puis-je le tolérer? Y at-il un drapeau ou une case à cocher pour cela?

Vous l'obtenez quand vous faites des choses comme: 

v && arr.Push(v);

par opposition à: 

if (v) {
    arr.Push(v);
}

Les deux font exactement la même chose. Si vous mettez: 

window.test = function(v) {
    'use strict';
    var arr = [];
    if (v) {
        arr.Push(v);
    }
    return arr;
};

dans le minifier cela diminue quand même:

window.test=function(a){var b=[];a&&b.Push(a);return b};
33
ryanve

Je ne pense pas que JSLint ait une option pour désactiver cela.

JSHint (une fourchette avec plus d'options) a une option, cependant: L'option expr, documentée comme "si ExpressionStatement doit être autorisé en tant que programme".

74
T.J. Crowder

Vous pouvez ajouter la ligne suivante pour ignorer cet avertissement: 

/ * jshint -W030 * /

Vous pouvez en lire plus à ce sujet ici .

36
ReedD

Il n'y a pas d'option pour cela dans JSLint. Vous pouvez le contourner en utilisant:

var dummy = v && arr.Push(v);

NB: dummy est évalué à true après cela.

Une autre solution pourrait être:

function expression(statement) { 
 'use strict';
 return statement; 
}
expression(v && arr.Push);
9
KooiInc

Les gens qui cherchent comment le supprimer en utilisant ESLint . Vous pouvez le découvrir en écrivant le commentaire suivant juste au-dessus de la ligne.

// eslint-disable-next-line no-unused-expressions

Vous pouvez également supprimer l'avertissement pour le fichier entier en plaçant le commentaire suivant tout en haut du fichier.

/* eslint-disable no-unused-expressions */
0
Shivam