Sobrecarga de funciones de JavaScript

Mehvish Ashiq 12 octubre 2023
  1. Use la declaración if-else para hacer la sobrecarga de funciones en JavaScript
  2. Use la declaración switch para hacer la sobrecarga de funciones en JavaScript
  3. Use expresiones de función para hacer la sobrecarga de funciones en JavaScript
Sobrecarga de funciones de JavaScript

Este tutorial lo educa sobre la sobrecarga de funciones de JavaScript. La sobrecarga de funciones significa tener más de una función con el mismo nombre y varias implementaciones. Pero, este concepto no está disponible en JavaScript.

Si tiene varias funciones con el mismo nombre, la última función se ejecuta en JavaScript. Entonces, usamos alternativas para implementar la sobrecarga de funciones en JavaScript.

Este tutorial utiliza expresiones if-else, switch y function expressions para lograr la sobrecarga de funciones.

Use la declaración if-else para hacer la sobrecarga de funciones 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

Producción :

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

En el fragmento de código, usamos la instrucción if-else para realizar la sobrecarga de funciones en JavaScript. Llamamos a la función displaySum() que funciona de manera diferente con diferentes parámetros. Muestra un mensaje si no se pasa ningún parámetro o se pasa uno.

Suma los dos números si se dan dos parámetros y utiliza un bucle for para sumar todos los valores en múltiples parámetros. Los argumentos son objetos en forma de matriz que juegan un papel vital y se pueden usar dentro de la función. Representa los argumentos pasados ​​de esa función particular en la que se está utilizando.

Use la declaración switch para hacer la sobrecarga de funciones en JavaScript

También podemos implementar la sobrecarga de funciones en JavaScript usando la declaración switch en lugar de la declaración if-else. Aunque ambos están produciendo el mismo resultado, el código se ve más limpio con la instrucción 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

Producción :

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

En este código, usamos la declaración switch para realizar diferentes acciones basadas en varios argumentos. Puedes leer sobre el objeto argumentos aquí o en la sección anterior.

Use expresiones de función para hacer la sobrecarga de funciones 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

Producción :

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

Usamos función y expresión de función para simular la sobrecarga de funciones usando JavaScript. La desventaja de este enfoque es que el código se ve más desordenado si se pasan cientos de parámetros.

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

Artículo relacionado - JavaScript Function