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
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since julio de 2015.
* Some parts of this feature may have varying levels of support.
Cada función de JavaScript en realidad es un objetoFunction. Esto se puede ver con el código(function() {}).constructor === Function, que devuelvetrue.
In this article
Constructor
- Function()
Crea un nuevo objeto
Function. Llamar al constructor directamente puede crear funciones dinámicamente, pero tiene problemas de seguridad y de rendimiento similares (pero mucho menos importantes) paraeval. Sin embargo, a diferencia deeval, el constructorFunctioncrea funciones que solo se ejecutan en el ámbito global.
Propiedades de la instancia
Function.argumentsUn arreglo que corresponde a los argumentos pasados a una función.Esto está obsoleto como propiedad de
Function. En su lugar, utiliza el objetoarguments (disponible dentro de la función).Function.callerEspecifica la función que invocó a la función que se está ejecutando actualmente.Esta propiedad está obsoleta, y solo es funcional para algunas funciones no estrictas.
Function.displayNameEl nombre a mostrar de la función.
Function.lengthEspecifica el número de argumentos que espera la función.
Function.nameEl nombre de la función.
Métodos de instancia
Function.prototype.apply(thisArg [,argsArray])Llama a una función y establece su
thisen elthisArgproporcionado. Los argumentos se pueden pasar como un objetoArray.Function.prototype.bind(thisArg[,arg1[,arg2[, ...argN]]])Crea una nueva función que, cuando se llama, tiene su
thisconfigurado en elthisArg. Opcionalmente, una determinada secuencia de argumentos se antepondrá a los argumentos siempre que se llame a la función recién invocada.Function.prototype.call(thisArg[,arg1,arg2, ...argN])Llama a una función y establece su
thisen el valor proporcionado. Los argumentos se pueden pasar tal cual.Function.prototype.toString()Devuelve una cadena que representa el código fuente de la función.Redefine el método
Object.prototype.toString().
Ejemplos
>Diferencia entre el constructor Function y la declaración function
Las funciones creadas con el constructorFunction no crean cierres para sus contextos de creación; siempre se crean en el ámbito global. Al ejecutarlos, solo podrán acceder a sus propias variables locales y globales, no a las del ámbito en el que se creó el constructorFunction. Esto es diferente de usareval con código para una expresión de función.
var x = 10;function createFunction1() { var x = 20; return new Function("return x;"); // esta |x| se refiere a la |x| global}function createFunction2() { var x = 20; function f() { return x; // esta |x| se refiere a la |x| local } return f;}var f1 = createFunction1();console.log(f1()); // 10var f2 = createFunction2();console.log(f2()); // 20Si bien este código funciona en los navegadores web,f1() producirá unReferenceError en Node.js, ya que no encontrará ax. Esto se debe a que el ámbito de nivel superior en Node no es el ámbito global, yx será local para el módulo.
Especificaciones
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-function-objects> |
Compatibilidad con navegadores
Ve también
- Funciones y ámbito de la función
- Declaración
function - Expresión
function - Declaración
function* - Expresión
function* - Función asíncrona
- Función generadora