JavaScript Funktionsüberladung

Mehvish Ashiq 12 Oktober 2023
  1. Verwenden Sie die if-else-Anweisung, um Funktionen in JavaScript zu überladen
  2. Verwenden Sie die switch-Anweisung, um eine Funktionsüberladung in JavaScript durchzuführen
  3. Verwenden Sie Funktionsausdrücke, um Funktionen in JavaScript zu überladen
JavaScript Funktionsüberladung

Dieses Tutorial informiert Sie über das Überladen von JavaScript-Funktionen. Funktionsüberladung bedeutet, dass mehr als eine Funktion mit demselben Namen und verschiedenen Implementierungen vorhanden ist. Dieses Konzept ist jedoch in JavaScript nicht verfügbar.

Wenn Sie mehrere Funktionen mit demselben Namen haben, wird die letzte Funktion in JavaScript ausgeführt. Daher verwenden wir Alternativen, um das Überladen von Funktionen in JavaScript zu implementieren.

Dieses Tutorial verwendet if-else, switch und function expressions, um das Überladen von Funktionen zu erreichen.

Verwenden Sie die if-else-Anweisung, um Funktionen in JavaScript zu überladen

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

Ausgabe:

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

Im Code-Snippet verwenden wir die Anweisung if-else, um eine Funktionsüberladung in JavaScript durchzuführen. Wir rufen die Funktion displaySum() auf, die sich mit verschiedenen Parametern unterschiedlich verhält. Es zeigt eine Meldung an, wenn kein oder ein Parameter übergeben wird.

Es addiert die beiden Zahlen, wenn zwei Parameter angegeben sind, und verwendet eine for-Schleife, um alle Werte in mehreren Parametern zu addieren. Die Argumente sind Array-ähnliche Objekte, die eine wichtige Rolle spielen und innerhalb der Funktion verwendet werden können. Es stellt die Argumente dar, die von dieser bestimmten Funktion übergeben werden, in der es verwendet wird.

Verwenden Sie die switch-Anweisung, um eine Funktionsüberladung in JavaScript durchzuführen

Wir können das Überladen von Funktionen auch in JavaScript implementieren, indem wir die Anweisung switch anstelle der Anweisung if-else verwenden. Obwohl beide die gleiche Ausgabe erzeugen, sieht der Code mit der switch-Anweisung sauberer aus.

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

Ausgabe:

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

In diesem Code verwenden wir die switch-Anweisung, um verschiedene Aktionen basierend auf verschiedenen Argumenten auszuführen. Über das Objekt Argumente können Sie hier oder im vorherigen Abschnitt nachlesen.

Verwenden Sie Funktionsausdrücke, um Funktionen in JavaScript zu überladen

// 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

Ausgabe:

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

Wir verwenden Funktion und Funktionsausdruck, um das Überladen von Funktionen mit JavaScript zu simulieren. Der Nachteil dieses Ansatzes besteht darin, dass der Code chaotischer aussieht, wenn Hunderte von Parametern übergeben werden.

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

Verwandter Artikel - JavaScript Function