Juanma Santoyo

En ocasiones me llaman friki

El array arguments de JavaScript

| No hay comentarios

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.

Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone

Deja un comentario

Los campos obligatorios están marcados con *.