Declaración de función
Una función creada con una declaración de función es un objeto Función y tiene todas las propiedades, métodos y comportamiento de los objetos Función. Ejemplo:
function statement(item){ console.log('Function statement example '+ item); }
Expresión de función
Una expresión de función es similar a la declaración de función, excepto que el nombre de la función se puede omitir para crear funciones anónimas. Ejemplo:
var expression = function (item){ console.log('Function expression example '+ item); }
Expresiones de funciones inmediatamente invocadas
Una vez que se crea la función, se invoca a sí misma, no es necesario invocarla explícitamente. En el siguiente ejemplo, la variable 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 a; o arrojará 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é utilizar 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 qué función se invoca, se crea un nuevo contexto de ejecución sobre la marcha y, por lo tanto, la variable saludar entra en ese contexto de ejecución de función, no en el global, esto es lo que la hace única. This ensures that code inside IIFE does not interfere with other code or be interfered by another code
y así el código es seguro.
Más información
- Expresión de función invocada inmediatamente en Wikipedia
- ¿Qué hace el punto y coma inicial en las bibliotecas de JavaScript?