80 votes

Message JSLint: Variables non utilisées

que puis-je faire si JSLint se plaint de "je" étant une variable inutilisée dans un tel scénario:

var items = "<option selected></option>";
$.each(data, function (i, item) {
    items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
});

(i, item) est requis afin de paramètres et je suis le seul à l'aide de "point".

Est-il d'autre solution que de tolérer les variables inutilisées ou la réécriture de l' $.chaque utilisation de l'indice, les deux solutions que je préfère ne pas le faire?

Merci à l'avance.

Mise à jour: j'apprécie toutes les suggestions, mais ce code est simplement un exemple pour vous montrer ce que je veux dire et je suis intéressé de voir une solution générale, s'il en est un. Merci.

79voto

nickf Points 185423

On dirait que quelqu'un a signalé exactement le même problème et il a été corrigé. https://github.com/douglascrockford/JSLint/issues/43

Essayer:

 var items = "<option selected></option>";
/*jslint unparam: true*/
$.each(data, function (i, item) {
    items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
});
/*jslint unparam: false*/  // so that you still get warnings from other functions
 

1voto

nickf Points 185423

vous pourriez faire ceci:

 var items = "<option selected></option>";
$.each(data, function () {
    var item = arguments[1];
    items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
});
 

... mais c'est probablement pire si vous me demandez.

1voto

Magnus Hoff Points 12052

Un moyen possible de se débarrasser de l'avertissement de manière assez auto-documentée est de faire en sorte que la variable inutilisée soit utilisée, comme ceci:

 // Utility function in project scope:
function unusedVariables(/* Put all your deliberately unused variables here */) {
    // pass
}

// And then, later:
var items = "<option selected></option>";
$.each(data, function (i, item) {
    unusedVariables(i); //< This is the new and magical line
    items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
});
 

Bien sûr, vous pouvez maintenant entrer dans la situation où vous marquez une variable comme étant inutilisée et que vous l'utilisez toujours quelque part. En outre, cette méthode peut être trop détaillée, selon le contexte.

Cette méthode a l'avantage d'être précise. Utiliser /*jslint unparam*/ peut être trop large.

1voto

xn. Points 4122

Pourquoi ne pas utiliser void pour préciser que vous n'utilisez pas intentionnellement la variable?

 $.each(data, function (i, item, any, other, unused, vars) {
  void(i, any, other, unused, vars);
  items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
});
 

Cela est également utile dans les fonctions abstraites censées être écrasées, mais pour lesquelles vous souhaitez afficher la signature, ou dans des répliques, où vous ignorez les arguments, mais souhaitez faire correspondre la signature de la fonction simulée.

1voto

DharmaTurtle Points 96

Je renomme "i" comme "non utilisé". Cela laisse évidemment toujours l'erreur, mais je le vois dans la liste et je sais que j'ai "vérifié" cette erreur et que ça me convient.

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