Existe-t-il des moyens standard de marquer un argument de fonction comme non utilisé dans JavaScript, de la même manière que de démarrer un argument de méthode avec un trait de soulignement dans Ruby?
Juste pour avoir un exemple à partir duquel travailler, ceci est assez courant avec le $.each
où vous écrivez du code qui n'a pas besoin de l'index, juste la valeur, dans le rappel d'itération ($.each
est en arrière par rapport à Array#forEach
):
$.each(objectOrArrayLikeThing, function(_, value) { }
// Use value here
});
En utilisant _
est la méthode la plus proche que j'ai vue pour le faire, oui, mais j'en ai également vu beaucoup d'autres - lui donnant quand même un nom reflétant son objectif (index
), l'appelant unused
, etc.
Si vous devez ignorer plusieurs paramètres, vous ne pouvez pas répéter le même identifiant (c'est interdit en mode strict , qui devrait être la valeur par défaut de tout le monde et la valeur par défaut dans les modules et class
constructions), vous devez donc faire des choses comme _0
et _1
ou _
et __
, etc.
Avec des navigateurs prenant en charge la déstructuration, on peut faire:
function ({}, {}, value) {
// console.log(value)
}
Ce qui est plutôt intéressant car il évite le problème de plusieurs arguments ayant le même nom et ne crée pas non plus de problèmes avec les bibliothèques qui affectent des méthodes à _
(lodash, souligné, etc.).
Un problème avec cette approche est que les arguments inutilisés de type undefined
ou null
lanceront.
Pour undefined
une solution consiste à utiliser les paramètres par défaut:
function ({}={}, {}={}, value) {
// console.log(value)
}
Malheureusement, aucune solution aussi facilement applicable pour null
.
Je recommanderais cette syntaxe:
function(_index, value) {...}
pour ne pas masquer la variable lodash et avoir toujours une description de l'argument au cas où il serait utilisé.
VS Code met également en évidence ces noms correctement et ces arguments inutilisés ne seront pas supprimés après que le code de correction automatique sent
Que diriez-vous d'utiliser l'objet function
arguments
?
function third() { const [,,thirdArg] = arguments;
return thirdArg;
}
console.log(third(1,2,3));