El array arguments de JavaScript
Normalmente los lenguajes de programación aplican ciertos controles sobre los argumentos que se pasan a una función:
- ¿Se pasan los mismos parámetros que están especificados?
- ¿Si se pasan menos parámetros, los que faltan tienen especificados valores por defeto?
- ¿Los tipos coinciden?
Este tipo de cosas.
En JavaScript no es así. JavaScript no aplica ningún tipo de control sobre los parámetros que se le pasan, y en principio puedes pasar más parámetros de los especificados, o menos; a cualquier función. Pero JavaScript tiene el array arguments.
El array arguments es un array que tenemos en todas las funciones de JavaScript y que contiene los parámetros que se han pasado a la función.
Por ejemplo, si invocamos a una función de esta manera:
mi_funcion("param1", "param2", "param3", "param4");
El array arguments (que será accesible desde cualquier parte de mi_funcion) contendrá:
[ "param1" , "param2" , "param3" , "param4" ]
Nuestro control de parámetros
En las ocasiones en que necesitemos realizar un control de parámetros, podemos hacer un par de coas:
Detectar que se estén pasando un número concreto de parámetros
El array arguments es un array como cualquier otro y también tiene la propiedad length. El valor arguments.length nos dirá cuántos parámetros se han enviado y notros podemos acuar en consecuencia:
function mi_funcion(param1, param2, param3, param4)
{
if(arguments.length == 4)
{
/* ... */
}
else
{
/* ... */
}
}
Parámetros indeterminados
¿Como actuar si queremos que nuestra función tenga una cantidad indeterminada de parámetros? Normalmente, ante estos se pasan arrays como argumento, arguments nos soluciona el problema. Supongamos que nuestra función recibe un primer parámetro fijo, y el resto puede ser variable:
/* La invocación a la función */
mi_funcion(fijo, variable1, variable2, variable3, variable4, variable5);
/* La especificación de la función */
function mi_funcion(fijo)
{
var variables = new Array();
if(arguments.length > 1)
{
variables = arguments.slice(1);
}
/* ... */
}
De esta forma, el valor de el array variables será:
[ variable1 , variable2 , variable3 , variable4 , variable5 ]
Conclusión
El array arguments nos permite llevar un control de los argumentos que se pasan a las funciones, de forma que se puedan detectar las irregularidades que nosotros queramos y podamos actuar en consecuencia. Lo que hemos visto aquí es sólo una pequeña parte de las posiblidades que nos da arguments, y obviamente su uso dependerá de las necesidades de nuestra función, pero creo que es lo suficientemente ilustrativo como para conocer su potencial.