Funciones en javascript
Las funciones se pueden crear en forma de expresión o declaración:
// función en forma de declaración
function sumarAB(a,b){
return a+b;
}
// función en forma de expresión
var sumar = function(a, b) {
return a + b;
}
Ambas funciones pueden ser invocadas llamándose por el nombre de la función, en el caso de la función-sentencia, o de la variable en el caso de la función-expresión
sumarNumeros(1,3) // retorna 4
sumar(1,1) // retorna 2
Funciones autoejecutables
(function(p1,p2,...pn){/*....*/}(p1,p2,..pn);
Sabemos que una IIFE(Immediately-invoked function expressions) es una función en forma de expresión que se ejecuta sobre la marcha, al mismo momento que se define:
var hola = function() {
return "hola";
}();
console.log(hola);
Al
poner los paréntesis, JavaScript evalúa el interior de los paréntesis como una
expresión, igual que habría hecho con la suma de dos números: (3 + 2)
Envolver entre paréntesis la función permite decirle a JavaScript que estamos creando una función en forma de expresión, por lo que podemos autoinvocarla en el mismo momento de la declaración.
Utilidad de las funciones autoejecutables en forma de expresión
Una función
autoejecutable crea un nuevo contexto donde podemos declarar variables a
salvo de otras variables definidas en el ámbito global. Por ejemplo, si tenemos
una variable global saludo
,
podemos definir otra variable con el mismo nombre dentro de la IIFE, sin
miedo a que ambas colisionen
var saludo = "hola";
(function(nombre){
var saludo = "buenos días";
console.log(saludo + " " + nombre);
}("Juan")); //>> buenos días Juan
En
este ejemplo, la IIFE se ejecuta automáticamente después de ser definida y
muestra por la consola un saludo. En este caso, dentro de la IIFE la variable
saludo
contiene el texto "buenos días"
, sin
afectar a la variable saludo
global.
Funciones Anónimas:
Son funciones sin nombre o identificador que se pueden pasar a otras funciones o asignarlas a variables
var sumar = function(a,b){
return a+b;
}
var resultado = sumar(1,2);
console.log(resultado);
No hay comentarios:
Publicar un comentario