aboutsummaryrefslogtreecommitdiff
path: root/files/es/glossary/función/index.html
blob: f67d9e90c8ded80f37754ec33dc366728bffbd9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
---
title: Función
slug: Glossary/Función
tags:
  - CodingScripting
  - Glosario
  - IIFE
  - JavaScript
translation_of: Glossary/Function
---
<p>Una <strong>función</strong> es un fragmento de código que puede ser llamado por otro código o por sí mismo, o por una {{Glossary("variable")}} que haga referencia a la función. Cuando se llama a una función, los {{Glossary("Argument", "argumentos")}} se pasan a la función como entrada, y la función puede devolver opcionalmente una salida. Una función en {{glossary("JavaScript")}} es también un {{glossary("object", "objeto")}}.</p>

<p>El nombre de la función es un {{Glossary("identifier", "identificador")}} declarado como parte de una declaración de función o expresión de función. El {{Glossary("scope", "ámbito")}} de la función depende de si el nombre de la función es una declaración o una expresión.</p>

<h3 id="Diferentes_tipos_de_funciones">Diferentes tipos de funciones</h3>

<p>Una <strong>función anónima</strong> es una función que no tiene nombre:</p>

<pre class="brush: js">function () {};
// o se puede usar la anotación con flecha ECMAScript 2015
() =&gt; {};
</pre>

<p> </p>

<p>Una <strong>función nombrada</strong> es una función con nombre:</p>

<pre class="brush: js">function foo() {};
// o se puede usar la anotación con flecha ECMAScript 2015
const foo = () =&gt; {};
</pre>

<p>Una <strong>función interna</strong> es una función que está dentro de otra función (<code>cuadrado</code> en este caso). Una <strong>función externa</strong> es una función que contiene a otra función (<code>sumarCuadrados</code> en este caso):</p>

<pre class="brush: js">function sumarCuadradors(a,b) {
   function cuadrado(x) {
      return x * x;
   }
   return cuadrado(a) + cuadrado(b);
};
//Usando la anotación de flecha ECMAScript 2015
const sumarCuadrados = (a,b) =&gt; {
   const cuadrado = x =&gt; x*x;
   return cuadrado(a) + cuadrado(b);
};
</pre>

<p>Una <strong>función recursiva</strong> es una función que se llama a sí misma. Mira {{Glossary("Recursion", "recursión")}}.</p>

<pre class="brush: js">function bucle(x) {
   if (x &gt;= 10)
      return;
   bucle(x + 1);
};
//Usando la anotación de flecha ECMAScript 2015
const bucle = x =&gt; {
   if (x &gt;= 10)
      return;
   bucle(x + 1);
};
</pre>

<p>Una <strong>expresión de una función que se invoca inmediatamente </strong>({{glossary("IIFE")}}, por sus siglas en inglés) es una función que se llama directamente después de que la función se haya cargado en el compilador del navegador. La forma de identificar un IIFE es ubicando el paréntesis izquierdo y derecho adicional al final de la declaración de la función.</p>

<pre class="brush: js">// Error (https://en.wikipedia.org/wiki/Immediately-invoked_function_expression)
/*
​function foo() {
    console.log('Hello Foo');
}();
*/

(function foo() {
    console.log("Hello Foo");
}());

(function food() {
    console.log("Hello Food");
})();

</pre>

<p>Si desea obtener más información sobre las IIFE, consulte la siguiente página en Wikipedia: <a href="https://en.wikipedia.org/wiki/Immediately-invoked_function_expression">Immediately Invoked Function Expression</a></p>

<h2 id="Saber_más">Saber más</h2>

<h3 id="Referencias_técnicas">Referencias técnicas</h3>

<ul>
 <li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions" title="en-US/docs/Web/JavaScript/Guide/Functions">Funciones</a></li>
 <li><a href="/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions">Funciones de flecha</a></li>
</ul>