web-dev-qa-db-fra.com

Valeurs d'argument par défaut dans les fonctions JavaScript

Duplicate possible:
Comment attribuer à une fonction javascript une valeur par défaut pour un paramètre

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 une erreur si j'essaie d'assigner des valeurs aux arguments de la fonction

manquant) après les paramètres formels

221
Douglas Crockford

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

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 vous pouvez l’appeler comme func(); pour 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);
374
Ravan Scafi

ES2015 et suivantes:

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

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

ou combinés avec déstructuration ES2015 ,

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 d’initialiser les paramètres formels avec les valeurs par défaut si aucune valeur ou undefined est passé.

Pre ES2015:

Si vous allez gérer des valeurs qui sont ET NON, Numbers, Strings, Boolean, NaN ou null you peut simplement utiliser

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

param || DEFAULT_VALUE

par exemple,

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

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

Ainsi, afin de gérer uniquement les valeurs undefined explicitement, l’approche privilégiée serait,

function C(a, b) {
  a = typeof a === 'undefined' ? DEFAULT_VALUE_A : a;
  b = typeof b === 'undefined' ? DEFAULT_VALUE_B : b;
}
136
Boopathi Rajaa

Vous devez vérifier si l'argument n'est pas défini:

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

Notez également que cette question a été réponseavant .

12
jtbandes

Je n'ai jamais vu cela se faire de cette façon en JavaScript. Si vous souhaitez une fonction avec des paramètres facultatifs auxquels sont attribuées des valeurs par défaut si les paramètres sont omis, voici une façon de le faire:

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

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

      alert("a: " + a + " b: " + b);
    }
5
tkahn
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
Gabriele Petrioli

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

function tester(paramA, paramB){
 if (typeof paramA == "undefined"){
   paramA = defaultValue;
 }
 if (typeof paramB == "undefined"){
   paramB = defaultValue;
 }
}
0
evilone