Comment obtenir une tranche de “arguments”
Tout ce que vous savez que arguments
est un objet spécial qui contient tous les arguments passés à la fonction.
Et tant qu'il n'est pas un tableau - vous ne pouvez pas utiliser quelque chose comme arguments.slice(1)
.
Donc la question - comment trancher tout, mais le premier élément de arguments
?
UPD:
semble comme il n'existe aucun moyen sans convertir un tableau avec
var args = Array.prototype.slice.call(arguments);
Si quelqu'un poste une autre solution ce serait génial, si pas, je vais vérifier à la première avec la ligne ci-dessus comme une réponse.
- +zerkms en effet, il existe une meilleure façon que de prendre
arguments
et de le convertir en un tableau etc. Veuillez voir ma réponse ci-dessous.
Vous devez vous connecter pour publier un commentaire.
Interférant avec les fonctions de tableau n'est pas réellement nécessaire.
À l'aide de reste la syntaxe de paramètre
...rest
est plus propre et plus pratique.Exemple
...Reste
Q. Comment trancher tout, mais le premier élément de
arguments
?La suivante retourne un tableau contenant tous les arguments sauf la première:
Vous n'avez pas à convertir
arguments
à un tableau d'abord, tout faire en une seule étape..slice()
surarguments
, mais la seule raison donnée est qu'il empêche la JS d'optimisation de moteur de la fonction. Il n'est donc pas qu'il échoue, il vient de à être plus lent. Je ne vais pas écrire du code pour répondre à une optimisation dans le moteur JS de la journée, pas lorsque le moteur de demain pourrait avoir résolu le problème d'optimisation, et en tout cas la différence ne sera probablement pas perceptible par l'utilisateur dans la plupart des cas. Mieux écriture claire et facile à maintenir le premier code, puis de revenir et de les optimiser, seulement si les performances mesurables question se pose.Vous pouvez "tranche sans découpage" par la marche de la procédure, les arguments de l'objet:
.slice()
😉Array.prototype.slice
, mais votre question était de savoir si il y a une autre manière.for
😛 )De https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments:
Paul Rosiana la réponse ci-dessus est correcte
Ce peut être un moyen:
function foo(...args)
Vous pouvez utiliser la méthode
[].slice.call(arguments, 1)
[].tranche va vous retourner la tranche de la fonction de l'objet et vous pouvez l'appeler comme les
arguments
et1
sont les paramètresVous pouvez utiliser ...reste au sein de la fonction pour séparer le premier et le reste des arguments:
JS: