Surcharge de fonctions JavaScript

Mehvish Ashiq 12 octobre 2023
  1. Utilisez l’instruction if-else pour effectuer une surcharge de fonction en JavaScript
  2. Utilisez l’instruction switch pour effectuer une surcharge de fonction en JavaScript
  3. Utiliser des expressions de fonction pour effectuer une surcharge de fonction en JavaScript
Surcharge de fonctions JavaScript

Ce didacticiel vous informe sur la surcharge des fonctions JavaScript. La surcharge de fonctions signifie avoir plus d’une fonction avec le même nom et diverses implémentations. Mais, ce concept n’est pas disponible en JavaScript.

Si vous avez plusieurs fonctions portant le même nom, la dernière fonction est exécutée en JavaScript. Nous utilisons donc des alternatives pour implémenter la surcharge de fonctions en JavaScript.

Ce tutoriel utilise if-else, switch et expressions de fonction pour accomplir la surcharge de fonction.

Utilisez l’instruction if-else pour effectuer une surcharge de fonction en JavaScript

function displaySum() {
  // if no argument
  if (arguments.length == 0) {
    console.log('No argument is passed.');
  }

  // if only one argument
  else if (arguments.length == 1) {
    console.log('You have to pass at least two arugments to perform addition.');
  }

  // multiple arguments
  else {
    let sum = 0;
    let length = arguments.length;
    for (var i = 0; i < length; i++) {
      sum = sum + arguments[i];
    }
    console.log('Sum is ' + sum);
  }
}

displaySum();                     // call function with no parameter
displaySum(3);                    // call function with one parameter
displaySum(4, 5);                 // call function with two parameters
displaySum(3, 5, 7, 2, 9, 7, 8);  // call function with multiple parameters

Production :

"No argument is passed."
"You have to pass at least two arguments to perform addition."
"Sum is 9"
"Sum is 41"

Dans l’extrait de code, nous utilisons l’instruction if-else pour effectuer une surcharge de fonction en JavaScript. Nous appelons la fonction displaySum() qui fonctionne différemment avec différents paramètres. Il affiche un message si aucun ou un paramètre n’est passé.

Il additionne les deux nombres si deux paramètres sont donnés et utilise une boucle for pour additionner toutes les valeurs de plusieurs paramètres. Les arguments sont des objets de type tableau qui jouent un rôle vital et peuvent être utilisés dans la fonction. Il représente les arguments passés de cette fonction particulière dans laquelle il est utilisé.

Utilisez l’instruction switch pour effectuer une surcharge de fonction en JavaScript

Nous pouvons également implémenter la surcharge de fonction en JavaScript en utilisant l’instruction switch au lieu de l’instruction if-else. Bien que les deux produisent la même sortie, le code semble plus propre avec l’instruction switch.

function displaySum() {
  switch (arguments.length) {
    // if no argument
    case 0:
      console.log('No argument is passed.');
      break;

      // if only one argument
    case 1:
      console.log(
          'You have to pass at least two arguments to perform addition.');
      break;

      // multiple arguments
    default:
      let sum = 0;
      let length = arguments.length;

      for (var i = 0; i < length; i++) {
        sum = sum + arguments[i];
      }
      console.log('Sum is ' + sum);
      break;
  }
}

displaySum();                     // call function with no parameter
displaySum(3);                    // call function with one parameter
displaySum(4, 5);                 // call function with two parameters
displaySum(3, 5, 7, 2, 9, 7, 8);  // call function with multiple parameters

Production :

"No argument is passed."
"You have to pass at least two arguments to perform addition."
"Sum is 9"
"Sum is 41"

Dans ce code, nous utilisons l’instruction switch pour accomplir différentes actions basées sur divers arguments. Vous pouvez en savoir plus sur l’objet arguments ici ou dans la section précédente.

Utiliser des expressions de fonction pour effectuer une surcharge de fonction en JavaScript

// Creating a class "practiceFunctionOverloading"
class practiceFunctionOverloading {
  // Creating an overloadable function.
  displaySum() {
    // Define four overloaded functions
    var functionNoParam = function() {
      return 'No parameter is passed.';
    };
    var functionOneParam = function(arg1) {
      return 'You must have at least two parameters to sum.';
    };
    var functionTwoParam = function(arg1, arg2) {
      console.log('Sum is given below: ');
      return arg1 + arg2;
    };
    var functionMultiParam = function(arg1, arg2, arg3) {
      var sum = 0;
      for (var i = 0; i < arguments.length; i++) {
        sum = sum + arguments[i];
      }
      console.log('Sum is given below: ');
      return sum;
    };

    /* the length and type of the arguments passed
       ( in this case an Array ) we can determine
       which function to be executed */
    if (arguments.length === 0) {
      return functionNoParam();
    } else if (arguments.length === 1) {
      return functionOneParam(arguments[0]);
    } else if (arguments.length === 2) {
      return functionTwoParam(arguments[0], arguments[1]);
    } else if (arguments.length > 2) {
      return functionMultiParam(arguments[0], arguments[1], arguments[2]);
    }
  }
}
// Driver Code
// create an object of class practiceFunctionOverloading
var object = new practiceFunctionOverloading();
console.log(object.displaySum());         // call function with no parameter
console.log(object.displaySum(1));        // call function with one parameter
console.log(object.displaySum(2, 3));     // call function with two parameters
console.log(object.displaySum(2, 4, 5));  // call function with three parameters

Production :

"No parameter is passed."
"You must have at least two parameters to sum."
"Sum is given below: "
5
"Sum is given below: "
11

Nous utilisons une fonction et une expression de fonction pour simuler la surcharge de fonctions à l’aide de JavaScript. L’inconvénient de cette approche est que le code semble plus désordonné si des centaines de paramètres sont passés.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Article connexe - JavaScript Function