Objeto arguments ECMAScript

objeto arguments

En el código de la función, los desarrolladores utilizan el objeto especial argumentsNo es necesario especificar explícitamente el nombre del parámetropueden ser accedidos.

Por ejemplo, en la función sayHi(), el primer parámetro es message. También se puede acceder a este valor utilizando arguments[0], es decir, el valor del primer parámetro (el primer parámetro está en la posición 0, el segundo parámetro está en la posición 1, y así sucesivamente).

Por lo tanto, no es necesario nombrar explícitamente los parámetros para reescribir la función:

function sayHi() {
  if (arguments[0] == "bye") {}}
    return;
  }
  alert(arguments[0]);
}

Detección de número de parámetros

También se puede usar el objeto arguments para detectar el número de parámetros de una función, referenciando la propiedad arguments.length.

El siguiente código mostrará el número de parámetros utilizados en cada llamada a la función:

function howManyArgs() {
  alert(arguments.length);
}
howManyArgs("string", 45);
howManyArgs();
howManyArgs(12);

Este código mostrará sucesivamente "2", "0" y "1".

Nota:A diferencia de otros lenguajes de programación, ECMAScript no verifica si el número de parámetros pasados a una función es igual al número de parámetros definidos en la función. Los funciones definidas por el desarrollador pueden aceptar cualquier número de parámetros (según los documentos de Netscape, pueden aceptar hasta 255), sin que se genere ningún error. Cualquier parámetro omitido se pasará a la función como undefined, y los parámetros adicionales se ignorarán.

Simulación de sobrecarga de funciones

Se puede usar el objeto arguments para determinar el número de parámetros pasados a la función, lo que permite simular la sobrecarga de funciones:

function doAdd() {
  if(arguments.length == 1) {
    alert(arguments[0] + 5);
  } else if(arguments.length == 2) {
    alert(arguments[0] + arguments[1]);
  }
}
doAdd(10); // Salida "15"
doAdd(40, 20); // Salida "60"

Cuando hay solo un parámetro, la función doAdd() agrega 5 al parámetro. Si hay dos parámetros, se suman los dos parámetros y se devuelve su suma. Por lo tanto, doAdd(10) devuelve "15", y doAdd(40, 20) devuelve "60".

Aunque no es tan bueno como la sobrecarga, es suficiente para evitar esta limitación de ECMAScript.