1

Pouvez-vous avoir plus d'un argument optionnel dans JavaScriptPouvez-vous avoir plus d'un argument optionnel en JavaScript?

Dites que vous avez un chien de fonction qui prend 3 arguments, un requis et 2 facultatifs.

dog(dogsName, [tripsOutOfTheCountry], [numberOfDoctorsVisits])

Je sais que vous pouvez vérifier undefined mais si la personne ne fournit pas tripsOutOfTheCountry car il est facultatif et fournit tout ce qu'ils pensent est numberOfDoctorsVisits.

Exemple run:

dog("Rusty", 10)

Ils entrent 10 pour numberofDoctorsVisits laissant tripsOutOfTheCountry blanc car il est facultatif.

donc vraiment le programme semble tripsOutOfTheCountry que 10, ce qui est vraiment numberofDoctorsVisits

Est-il possible d'éviter cela. Je ne pense pas qu'il y ait moyen de contourner cet autre que pour l'utilisateur d'entrer 0 pour tripsOutOfTheCountry.

l'exemple ci-dessus Sa modification à dog("Rusty, 0, 10)

Je pose simplement cette question parce que je ne sais pas si cela est possible.

P.S. désolé pour l'exemple corny

Répondre

1

C'est le même problème dans toute langue qui ne prend pas en charge les arguments nommés call-time, mais qui ne transmet que les arguments positionnellement. Si vous pouvez établir une règle claire pour identifier chaque argument, vous pouvez éventuellement déterminer manuellement ce qui est quoi; par exemple. Si les arguments ont des types distincts comme les nombres et les fonctions, vous pouvez tester ce qui est assigné à quoi et déplacer les choses en fonction de leur type et de leur ordre attendus. De nombreuses bibliothèques qui souhaitent exposer une API flexible le font, par ex. il suffit de regarder les variations this jQuery method permet. C'est tout sur vous, Javascript ne vous aide pas du tout.

La manière habituelle de faire est au lieu de passer des objets avec des noms explicites:

dog({ name: 'Rusty', numberOfDoctorsVisits: 10 })