Arguments en JavaScript

Arguments en JavaScript
Arguments en JavaScript

Un objeto arguments en javascript es un objeto similar a una matriz que nos da acceso a los argumentos pasados ​​a una función.

Características generales

Un objeto arguments es una variable local que está disponible en todas las funciones (excepto en las funciones de flecha ), y puede hacer referencia a los argumentos pasados ​​a la función dentro de él usando el objeto arguments. Este objeto contiene todos los argumentos pasados ​​a la función en el mismo orden en que se pasan a partir del índice 0. Por ejemplo, si pasa tres argumentos a una función, puede hacer referencia a ellos de la siguiente manera:

arguments[0]
arguments[1]
arguments[2]

También puede establecer el valor de los medios:

arguments[1] = 'new value';

Un objeto arguments no es una matriz Array, pero es similar a una matriz, es decir, no tiene ninguna propiedad Array excepto length. Es decir, no tiene la función pop, pero se puede convertir en una matriz real:

var args = Array.prototype.slice.call(arguments);
var args = [].slice.call(arguments);

// ES2015
const args = Array.from(arguments);

Puede usar el objeto arguments si llama a una función y le pasa más argumentos de los que se dice que acepta. Esta técnica es útil para funciones a las que se puede pasar un número diferente de argumentos. Puede usar la propiedad arguments.length para averiguar el número de argumentos pasados ​​a la función y luego procesar cada argumento al que se accede desde un objeto arguments. Para saber cuántos argumentos acepta una función al declararla, use el Function.length.

Estructura arguments en javascript

arguments

Uso del typeof

El parámetro devuelve el typeof valor object cuando se usa en el objeto en arguments sí:

console.log(typeof arguments); // 'object'

El uso del parámetro typeof en los argumentos devolverá el tipo de valor del argumento:

console.log(typeof arguments[0]);

Parámetro de propagación con el objeto arguments

También puede utilizar la función Array.from()‎ o el coeficiente de publicación (operador de propagación) para convertir el objeto arguments en la matriz de hechos:

<var args = Array.from(arguments);
var args = [...arguments];

arguments.callee

Indica la función que se está ejecutando actualmente.

arguments.caller

Indique qué función llamó a la función que se está ejecutando actualmente. Esta propiedad se omite y no es compatible con todos los navegadores por razones de seguridad.

arguments.length

Indica el número de argumentos pasados ​​a la función.

Ejemplos y aplicaciones en código

Función para agregar más de una cadena

El siguiente ejemplo define una función que combina más de una cadena. El único argumento definido al declarar esta función es el separador que separa los elementos que se recopilarán en la cadena:

function myConcat(separator) {
  var args = Array.prototype.slice.call(arguments, 1);
  return args.join(separator);
}

Puede pasar cualquier número de argumentos a esta función:

// "red, orange, blue"
myConcat(', ', 'red', 'orange', 'blue');

// "elephant; giraffe; lion; cheetah"
myConcat('; ', 'elephant', 'giraffe', 'lion', 'cheetah');

// "sage. basil. oregano. pepper. parsley"
myConcat('. ', 'sage', 'basil', 'oregano', 'pepper', 'parsley');

Función para la creación de listas HTML

El siguiente ejemplo define una función que crea una cadena que contiene los elementos HTML necesarios para crear un menú. El único parámetro formal en esta función es una cadena valorada » u» para crear una lista desordenada ( <ul>) o » o» para crear una lista vinculada ( <ol>):

 function list(type) {
  var result = '<' + type + 'l><li>';
  var args = Array.prototype.slice.call(arguments, 1);
  result += args.join('</li><li>');
  result += '</li></' + type + 'l>';
   return result;
}

Puede pasar cualquier número de argumentos a esta función:

var listHTML = list('u', 'One', 'Two', 'Three');
// "<ul><li>One</li><li>Two</li><li>Three</li></ul>"

Soporte de navegadores

CaracterísticaChromeFirefoxIEOperaSafari
Soporte básico