web-dev-qa-db-fra.com

Les conventions standard pour indiquer un argument de fonction ne sont pas utilisées en JavaScript

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?

29
Andrew Grimm

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.

24
T.J. Crowder

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.

19
Fredrik Carlsson

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

2
MarkosyanArtur

Que diriez-vous d'utiliser l'objet functionarguments?

function third() { const [,,thirdArg] = arguments;
  return thirdArg;
}
console.log(third(1,2,3));
0
Doug Coburn