Si j'ai quelque chose comme ça:
var blah = function() { };
et plus tard dans le code blah est utilisé, quel est l'indicateur JSLint qui dit de supprimer le bloc vide?
Je ne sais pas ce que jsLint
pense, mais s'il s'agit d'un problème et que vous avez besoin d'une solution, vous pouvez procéder de la manière suivante:
var blah = function() { return undefined; }; // or just return;
Mise à jour: Je pense que la variable Bergi
est correcte car, sur le jslint site de la section Required Blocks
:
JSLint s’attend à ce que si, tant que, faire et pour les déclarations soient faites avec blocks {c'est-à-dire, avec des instructions entre accolades} .JavaScript permet un if si être écrit comme ceci: if (condition) instruction; Ce formulaire est connu pour contribuer aux erreurs dans les projets où beaucoup de programmeurs sont travailler sur le même code. C'est pourquoi JSLint attend l'utilisation d'un bloc:
if (condition) { statements; }
L’expérience montre que cette forme est plus résistante.
Donc, il vérifie probablement que les blocs vides { }
et invalide la fonction vierge.
Si vous demandez quelle option JsLint désactive cet avertissement, c’est: "debug: true"
Bizarrement, les docs ne font aucune référence à ce comportement:
"Tolérer les instructions du débogueur" | debug | Les instructions true if debugger doivent être autorisées. Définissez cette option sur false avant de passer en production.
Mais si vous regardez le code , vous pouvez voir qu'il ne vous avertira pas avec l'option de débogage définie sur true:
function block(kind) {
// A block is a sequence of statements wrapped in braces.
...
if (kind !== 'catch' && array.length === 0 && !option.debug) {
curly.warn('empty_block');
}
...
}
Beaucoup de vérificateurs de code vérifient ce genre de chose. Cela ne signifie pas que vous devriez jamais avoir des blocs de code vides. Parfois, il y a des raisons valables de les avoir. Mais cela souvent signifie que le programmeur a simplement oublié d'écrire l'implémentation. :)
Ce que j'aime faire, c’est d’ajouter un commentaire dans le corps de la fonction, expliquant pourquoi elle est vide. Cela devrait supprimer l'avertissement, mais cela peut ne pas être le cas si le vérificateur de code considère un bloc de code avec un commentaire "vide".
var blah = function() { /* empty because ... */ };
Si vous avez l'intention d'utiliser la fonction en tant que constructeur avec l'opérateur new
:
// Returns the instance that was just created with the new operator.
var ClassLikeFunction = function(){
return this;
};
Par contre, si est intentionnellement une fonction vide sans valeur de retour:
// Returns the same value as a function that returned nothing.
var blankFunction = function(){
return undefined;
};
Ce
{
...
}
est considéré comme un bloc de code et l'indicateur vous indique qu'il est vide (il ne contient aucune commande). Vous n'avez pas besoin de l'enlever, comme @ Katana314 l'a dit, cela pourrait être intentionnel.
Utilisez l'expression lambda:
const blah = () => void 0;
Cela fera comprendre que blah
est une fonction vide qui renvoie undefined
.
ce qui m'a laissé à cette question est que j'avais une fonction vide dans mon espace de noms
et quand j'ai appelé cette fonction, et
TypeError: MyNamespcae.myFunction is not a function
alors ne créez pas de fonction vide, ajoutez au moins une instruction comme void (0); ou retourne null;