Valeurs des arguments par défaut dans les fonctions JavaScript [dupliquer]

possibilité de dupliquer:

Comment faire une valeur par défaut pour un paramètre d'une fonction javascript

en PHP:

function func($a = 10, $b = 20){
  // if func() is called with no arguments $a will be 10 and $ b  will be 20
}

Comment Pouvez-vous faire cela en JavaScript?

je reçois un message d'erreur si j'essaie d'assigner des valeurs à des arguments de la fonction

manquant) après paramètres formels

210
demandé sur Brett DeWoody 2011-06-26 23:48:17
la source

6 ответов

dans javascript, vous pouvez appeler une fonction (même si elle a des paramètres) sans paramètres.

donc vous pouvez ajouter des valeurs par défaut comme ceci:

function func(a, b){
   if (typeof(a)==='undefined') a = 10;
   if (typeof(b)==='undefined') b = 20;

   //your code
}

et ensuite vous pouvez l'appeler comme func(); utiliser les paramètres par défaut.

voici un test:

function func(a, b){
   if (typeof(a)==='undefined') a = 10;
   if (typeof(b)==='undefined') b = 20;

   alert("A: "+a+"\nB: "+b);
}
//testing
func();
func(80);
func(100,200);
365
répondu Ravan 2015-02-19 23:37:08
la source

à partir de 2015:

de ES6 / ES2015, nous avons des paramètres par défaut dans la spécification de langue. Donc nous pouvons juste faire quelque chose de simple comme,

function A(a, b = 4, c = 5) {
}

ou combiné avec ES2015 déstructuration ,

function B({c} = {c: 2}, [d, e] = [3, 4]) {
}

Pour une explication détaillée,

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/default_parameters

les paramètres de fonction par défaut permettent aux paramètres formels d'être initialisés avec des valeurs par défaut si aucune valeur ou Non défini est passé.

Pré ES2015:

si vous allez gérer des valeurs qui sont PAS Nombres, Chaînes de caractères, Booléen, NaN , ou null , vous pouvez simplement utiliser

(ainsi, pour les objets, tableaux et fonctions que vous prévoyez de ne jamais envoyer null , vous pouvez utiliser)

param || DEFAULT_VALUE

par exemple,

function X(a) {
  a = a || function() {};
}

bien que cela semble simple et fonctionne, cela est restrictif et peut être un anti-modèle parce que || fonctionne sur toutes les valeurs falsy ( "" , null , NaN , false , 0 ) aussi - ce qui rend cette méthode impossible d'attribuer à un param la valeur falsy passé comme argument.

ainsi, afin de traiter seulement les valeurs undefined explicitement, l'approche préférée serait,

function C(a, b) {
  a = typeof a === 'undefined' ? DEFAULT_VALUE_A : a;
  b = typeof b === 'undefined' ? DEFAULT_VALUE_B : b;
}
132
répondu Boopathi Rajaa 2015-12-08 13:37:53
la source

vous devez vérifier si l'argument est non défini:

function func(a, b) {
    if (a === undefined) a = "default value";
    if (b === undefined) b = "default value";
}

notez aussi que cette question a été a répondu avant .

12
répondu jtbandes 2017-05-23 15:10:42
la source

Je ne l'ai jamais vu faire de cette façon en JavaScript. Si vous voulez une fonction avec des paramètres optionnels qui se voient attribuer des valeurs par défaut si les paramètres sont omis, voici un moyen de le faire:

 function(a, b) {
      if (typeof a == "undefined") {
        a = 10;
      }

      if (typeof b == "undefined") {
        a = 20;
      }

      alert("a: " + a + " b: " + b);
    }
5
répondu tkahn 2011-12-07 19:38:30
la source
function func(a, b)
{
  if (typeof a == 'undefined')
    a = 10;
  if (typeof b == 'undefined')
    b = 20;
  // do what you want ... for example
  alert(a + ',' + b);
}

en sténographie

function func(a, b)
{
  a = (typeof a == 'undefined')?10:a;
  b = (typeof b == 'undefined')?20:b;

  // do what you want ... for example
  alert(a + ',' + b);
}
4
répondu Gabriele Petrioli 2011-06-26 23:53:42
la source

vous ne pouvez pas ajouter de valeurs par défaut pour les paramètres de fonction. Mais vous pouvez le faire:

function tester(paramA, paramB){
 if (typeof paramA == "undefined"){
   paramA = defaultValue;
 }
 if (typeof paramB == "undefined"){
   paramB = defaultValue;
 }
}
0
répondu evilone 2011-06-27 00:00:24
la source

Autres questions sur javascript arguments function