2.5 KiB
title | localeTitle |
---|---|
Immediately Invoked Functions Expressions(IIFEs) | 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:
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:
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.
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
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?
(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 ¿Qué hace el punto y coma principal en las bibliotecas de JavaScript?