freeCodeCamp/guide/spanish/javascript/immediately-invoked-functio.../index.md

60 lines
2.5 KiB
Markdown
Raw Normal View History

2018-10-12 19:37:13 +00:00
---
title: Immediately Invoked Functions Expressions(IIFEs)
localeTitle: Expresiones de funciones inmediatamente invocadas (IIFE)
---
## Declaración de función
Una función creada con una declaración de función es un objeto de función y tiene todas las propiedades, métodos y comportamiento de los objetos de función. Ejemplo:
```javascript
function statement(item){
console.log('Function statement example '+ item);
}
```
## Expresión de la función
Una expresión de función es similar a la declaración de función, excepto que se puede omitir el nombre de la función para crear funciones anónimas. Ejemplo:
```javascript
var expression = function (item){
console.log('Function expression example '+ item);
}
```
## Expresiones de funciones inmediatamente invocadas
Tan pronto como se crea la función, se invoca a sí misma, no necesita invocar explícitamente. En la siguiente variable de ejemplo, iife almacenará una cadena que es devuelta por la ejecución de la función.
```javascript
var iife = function (){
return 'Immediately Invoked Function Expressions(IIFEs) example ';
}();
console.log(iife); // 'Immediately Invoked Function Expressions(IIFEs) example '
```
La declaración antes de IIFE siempre debe terminar con una; o lanzará un error.
**Mal ejemplo**
```javascript
var x = 2 //no semicolon, will throw error
(function(y){
return x;
})(x); //Uncaught TypeError: 2 is not a function
```
## ¿Por qué usar las expresiones de funciones invocadas inmediatamente?
```javascript
(function(value){
var greet = 'Hello';
console.log(greet+ ' ' + value);
})('IIFEs');
```
En el ejemplo anterior, cuando el motor javascript ejecuta el código anterior, creará un contexto de ejecución global cuando vea el código y creará un objeto de función en la memoria para IIFE. Y cuando llega a la línea `46` debido a la función que se invoca, se crea un nuevo contexto de ejecución sobre la marcha y, por lo tanto, la variable greet entra en ese contexto de ejecución de la función y no en el global. Esto es lo que lo hace único. `This ensures that code inside IIFE does not interfere with other code or be interfered by another code` por lo que el código es seguro.
#### Más información
[Expresión de función inmediatamente invocada en Wikipedia](https://en.wikipedia.org/wiki/Immediately-invoked_function_expression) [¿Qué hace el punto y coma principal en las bibliotecas de JavaScript?](https://stackoverflow.com/questions/1873983/what-does-the-leading-semicolon-in-javascript-libraries-do)