aboutsummaryrefslogtreecommitdiff
path: root/files/es/web/javascript/referencia/objetos_globales/function/función/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/es/web/javascript/referencia/objetos_globales/function/función/index.html')
-rw-r--r--files/es/web/javascript/referencia/objetos_globales/function/función/index.html92
1 files changed, 92 insertions, 0 deletions
diff --git a/files/es/web/javascript/referencia/objetos_globales/function/función/index.html b/files/es/web/javascript/referencia/objetos_globales/function/función/index.html
new file mode 100644
index 0000000000..af4dff0361
--- /dev/null
+++ b/files/es/web/javascript/referencia/objetos_globales/function/función/index.html
@@ -0,0 +1,92 @@
+---
+title: Function() constructor
+slug: Web/JavaScript/Referencia/Objetos_globales/Function/Función
+tags:
+ - Constructor
+ - Function
+ - JavaScript
+ - Referencia
+ - función
+translation_of: Web/JavaScript/Reference/Global_Objects/Function/Function
+---
+<div>{{JSRef("Objetos_globales", "Function")}}</div>
+
+<p><span class="seoSummary">El constructor <strong><code>Function</code></strong> crea un nuevo <strong>objeto</strong> <code>Function</code>. Llamar al constructor directamente puede crear funciones dinámicamente, pero tiene problemas de seguridad y de rendimiento similares (pero mucho menos importantes) para {{jsxref("eval")}}. Sin embargo, a diferencia de eval, el constructor <code>Function</code> crea funciones que solo se ejecutan en el ámbito global.</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/function-constructor.html","shorter")}}</div>
+
+<p class="hidden">La fuente de este ejemplo interactivo se almacena en un repositorio de GitHub. Si deseas contribuir al proyecto de ejemplos interactivos, clona <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> y envíanos una solicitud de extracción.</p>
+
+<h2 id="Sintaxis">Sintaxis</h2>
+
+<pre class="syntaxbox notranslate"><code>new Function([<var>arg1 </var>[, <var>arg2 </var>[, ...<var>argN</var>]] ,] <var>functionBody</var>)</code></pre>
+
+<h3 id="Parámetros">Parámetros</h3>
+
+<dl>
+ <dt><code><var>arg1</var>, <var>arg2</var>, ... <var>argN</var></code></dt>
+ <dd>Nombres que utilizará la función como nombres de argumentos formales. Cada uno debe ser una cadena que corresponda a un identificador JavaScript válido, o una lista de dichas cadenas separadas por una coma. Por ejemplo: "<code>x</code>", "<code>theValue</code>" —o "<code>x,theValue</code>".</dd>
+ <dt><code><var>functionBody</var></code></dt>
+ <dd>Una cadena que contiene las declaraciones de JavaScript que comprenden la definición de función.</dd>
+</dl>
+
+<h2 id="Descripción">Descripción</h2>
+
+<p>Los objetos <code>Function</code> creados con el constructor <code>Function</code> se procesan cuando se crea la función. Esto es menos eficiente que declarar una función con una {{jsxref("Operators/function", "expresión de función")}} o {{jsxref("Statements/function", "declaración de función")}} y llamarla dentro de tu código porque tales funciones se procesan con el resto del código.</p>
+
+<p>Todos los argumentos pasados a la función se tratan como los nombres de los identificadores de los parámetros en la función que se va a crear, en el orden en que se pasan. Omitir un argumento dará como resultado que el valor de ese parámetro sea <code>undefined</code>.</p>
+
+<p>Invocar el constructor <code>Function</code> como función (sin usar el operador <code>new</code>) tiene el mismo efecto que invocarlo como constructor.</p>
+
+<h2 id="Ejemplos">Ejemplos</h2>
+
+<h3 id="Especificar_argumentos_con_el_constructor_Function">Especificar argumentos con el constructor Function</h3>
+
+<p>El siguiente código crea un objeto <code>Function</code> que toma dos argumentos.</p>
+
+<pre class="brush: js notranslate">// El ejemplo se puede ejecutar directamente en tu consola JavaScript
+
+// Crea una función que toma dos argumentos y devuelve la suma de esos argumentos
+const adder = new Function('a', 'b', 'return a + b');
+
+// Llama a la función
+adder(2, 6);
+// 8
+</pre>
+
+<p>Los argumentos "<code>a</code>" y "<code>b</code>" son nombres de argumentos formales que se utilizan en el cuerpo de la función, "<code>return a + b</code>".</p>
+
+<h2 id="Especificaciones">Especificaciones</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Especificación</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-function-constructor', 'Constructor Function')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Compatibilidad_del_navegador">Compatibilidad del navegador</h2>
+
+<div>
+<div class="hidden">La tabla de compatibilidad de esta página se genera a partir de datos estructurados. Si deseas contribuir con los datos, consulta <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> y envíanos una solicitud de extracción.</div>
+
+<p>{{Compat("javascript.builtins.Function.Function")}}</p>
+</div>
+
+<h2 id="Ve_también">Ve también</h2>
+
+<ul>
+ <li>{{jsxref("Functions", "Funciones y ámbito de la función", "", 1)}}</li>
+ <li>{{jsxref("Statements/function", "Declaración de function")}}</li>
+ <li>{{jsxref("Operators/function*", "Expresión function*")}}</li>
+ <li>{{jsxref("Statements/function", "Declaración de function*")}}</li>
+ <li>{{jsxref("Operators/function*", "Expresión function*")}}</li>
+ <li>{{jsxref("AsyncFunction", "Función asíncrona", "", 1)}}</li>
+ <li>{{jsxref("GeneratorFunction", "Función generadora", "", 1)}}</li>
+</ul>