Esta página ha sido traducida del inglés por la comunidad.Aprende más y únete a la comunidad de MDN Web Docs.
Function.prototype.arguments
Obsoleto: Esta característica ya no se recomienda. Aunque es posible que algunos navegadores aún lo admitan, probablemente ya se ha eliminado de los estándares web relevantes, está en proceso de eliminación o solo se conserva por motivos de compatibilidad. Evite usarlo y actualice el código existente si es posible; consulte latabla de compatibilidad en la parte inferior de esta página para orientar su decisión. Tenga en cuenta que esta característica puede dejar de funcionar en cualquier momento.
No estándar: Esta función no está estandarizada. No recomendamos usar funciones no estándar en producción, ya que tienen un soporte limitado en los navegadores y pueden cambiar o eliminarse. Sin embargo, pueden ser una alternativa adecuada en casos específicos donde no exista una opción estándar.
Nota:La propiedadarguments de los objetosFunction está en desuso. La forma recomendada de acceder al objetoarguments es hacer referencia a la variablearguments disponible dentro de las funciones.
La propiedad de accesoarguments de instancias deFunction devuelve los argumentos pasados a esta función. Para las funcionesstrict, flecha , asíncronas y generadoras, acceder a la propiedadarguments arroja unTypeError.
In this article
Descripción
El valor dearguments es un objeto similar a un arreglo correspondiente a los argumentos pasados a una función.
En el caso de recursividad, es decir, si la funciónf aparece varias veces en la pila de llamadas, el valor def.arguments representa los argumentos correspondientes a la invocación más reciente de la función.
El valor de la propiedadarguments normalmente esnull si no hay una invocación pendiente de la función en progreso (es decir, la función ha sido llamada pero aún no ha devuelto).
Tenga en cuenta que el único comportamiento especificado por la especificación ECMAScript es queFunction.prototype tiene un descriptor de acceso inicialarguments que arroja incondicionalmente unTypeError para cualquier solicitudget oset (conocida como"poison pill accessor" -accesor de píldora envenenada-), y que las implementaciones no pueden cambiar esta semántica para ninguna función, excepto funciones simples no estrictas. El comportamiento real de la propiedadarguments, si es algo más que arrojar un error, es definido en la implementación Por ejemplo, Chrome lo define como una propiedad de datos propia, mientras que Firefox y Safari extienden el descriptor de acceso inicialFunction.prototype.arguments de la píldora venenosa para manejar especialmente los valoresthis que son funciones no estrictas.
(function f() { if (Object.hasOwn(f, "arguments")) { console.log( "arguments es una propiedad propia con descriptor", Object.getOwnPropertyDescriptor(f, "arguments"), ); } else { console.log( "f no tiene una propiedad propia llamada argumentos. Tratando de obtener f.[[Prototype]].arguments", ); console.log( Object.getOwnPropertyDescriptor( Object.getPrototypeOf(f), "arguments", ).get.call(f), ); }})();// En Chrome:// arguments es una propiedad propia con descriptor {value: Arguments(0), writable: false, enumerable: false, configurable: false}// En Firefox:// f no tiene una propiedad propia llamada argumentos. Tratando de obtener f.[[Prototype]].arguments// Arguments { … }Ejemplos
>Usando la propiedad arguments
function f(n) { g(n - 1);}function g(n) { console.log(`antes: ${g.arguments[0]}`); if (n > 0) { f(n); } console.log(`después: ${g.arguments[0]}`);}f(2);console.log(`devuelto: ${g.arguments}`);// Logs:// antes: 1// antes: 0// después: 0// después: 1// devuelto: nullEspecificaciones
Not part of any standard.