JS: fonctions arguments par défaut les valeurs
Dans certaines langues, vous pouvez définir des valeurs par défaut pour les arguments de la fonction:
function Foo(arg1 = 50, arg2 = 'default') {
//...
}
Comment faire en JavaScript?
double possible de Définir une valeur de paramètre par défaut pour une fonction JavaScript
double possible de Est-il une meilleure façon de faire en option paramètres de la fonction en Javascript?
double possible de Est-il une meilleure façon de faire en option paramètres de la fonction en Javascript?
OriginalL'auteur SaltLake | 2011-01-22
Vous devez vous connecter pour publier un commentaire.
En JavaScript, tout ce qui n'est pas est attribué à la valeur
undefined
. Cela signifie que si vous voulez définir des valeurs par défaut pour une fonction, votre première ligne doit être vérifier pour voir si ces valeurs ne sont pas définies:Vous pouvez prendre un peu de couper court si vous savez à peu près ce que ces valeurs seront:
Toutefois, si ces arguments sont falsy, ils seront remplacés. Cela signifie que si arg1 est une chaîne vide,
null
,undefined
,false
ou0
il va être changé à 50, donc soyez prudent si vous avez choisi d'utiliserOriginalL'auteur James Long
Je préfère le
== null
vérifier au lieu detypeof(arg1) === undefined
(comme la bibliothèque jQuery n'en interne: http://docs.jquery.com/JQuery_Core_Style_Guidelines#JSLint). Non seulement est-il plus concis, il gère également la valeur null et undefined, de sorte que le code client peut passer dansnull
et d'obtenir la valeur par défaut est appliquée.Il est également possible d'intégrer la fonction dans une autre fonction qui fournit les valeurs par défaut. Le prototypejs bibliothèque a une fonction qui fournit les
argumentNames()
(ou si vous ne souhaitez pas utiliser le prototype, vous pouvez juste emprunter la mise en œuvre-c'est juste une expression rationnelle appliquée contre les résultats de la fonction detoString()
).De sorte que vous pourriez faire quelque chose comme ceci:
Et la mise en œuvre de
defaults()
ressemblerait à quelque chose comme ceci:Bien sûr, c'est du code non testé, et la façon dont il est écrit, il exige le Prototype de la bibliothèque. Mais tout ce que dit, les
== null
approche à l'intérieur de la fonction est plus naturel de Javascript, est plus facile à déboguer (vous n'avez pas d'autre fonction de la couche à pas à pas), et je trouve ça plus facile à lire:arg1 == null && arg1 = 50
serait correct (je ne suis pas sûr que les opérateurs de priorité en JS)?OriginalL'auteur Peter Rust
Vous auriez à le faire dans le corps de la fonction:
Un autre moyen de les tester pour
undefined
ounull
est comme ceci:Certaines personnes n'aiment pas parce qu'il est possible de remplacer la valeur de
undefined
puisque c'est juste une propriété globale. Tant qu'il n'est pas remplacé, ce serait beau travail. Si les paramètres sontnull
ouundefined
, ils vont être définie à une valeur par défaut.OriginalL'auteur user113716
De ES2015 (ES6), les paramètres par défaut peuvent être définies comme suit:
OriginalL'auteur JoeTidee