Funciones especiales

En esta sección se explica el funcionamiento de algunas funciones que se usan y se comportan de manera un poco especial. No parecen seguir estrictamnte las reglas vistas al definir el uso de las funciones en Javascript.

Se trata de las funciones

  • Callback o funciones de llamada
  • Funciones IIFE: funciones de ejecución inmediata

Resumen

Funciones especiales por su uso o por su ejecución.

La callback functions usan el caracter de objeto de las funcioens para usarals como argumentos.

Las IIFE son funciones que se ejecutan en el momento de ser cargadas por el navegador, sin necesidad de ser invocadas

Las IIFE

El nombre de estas funciones dicen literalmetne expresión de funciones invocadas inmediatamente, pero en una trtraducción mas entendible diríamos que son funciones autoejecutables.

No son más que funciones que se ejecutan sin necesidad de ser invocadas directamente desde el código. Realmetne son invocadas por el navegador cuando se terminan de cargar, pero es un mecanismo interno del intérprete de Javascript.

Estas funciones son anónimas y tiene dos partes

  • Definición de la función con el código que se ejecuta
  • Argumentos con los que se ejecuta.

En esencia sería como el ejemplo

(function (a) {
     console.log("IIFE functions: "+a)
}
)("argumentos");

Si pruebas este ejemplo veras que se ejecuta y en la consola aparece la frase "IIFE functions: argumentos"

No es imprescidnible que la función use ningún parámetro. Es como defnir cualqueir otra función, solo que no es accesible desde fuera de su ámbito, de hehco estas funciones pueen ser anónimas o con nombre.

(function iniciando(a)

{

console.log("Acabo de empezar");

} )("argumentos");

Este tipo de funciones posee su propio espacio de nombres que no es accesible desde fuera. Esto evita que se puedan producir errore por nombres repetidos en distintos archvios de scripts denttro de una misma página.

Notas

IIFE: inmediatley Invoked Epresion Function.

Son funciones autoejecutables que se crean igual que cualquier función. Pueden ser anónimas o nombradas.

A veces el bloque de la definición va perecedido de un símbolo !, +, -, ~. No afecta ala ejecución.

No pueden ser invocadas dede el script y forman una unidad no accesible desde fuera. Pero el cuerpo si puede acceder a variables y funciones globales.

Callback functions

Las funciones callback son funciones normales, con nombre o anónimas, que se usan como argumento de otras funciones o métodos.

Esa firma de uso de las funciones es posible por que las funciones son objetos y por tanto se pueden usarse como un argumento de otras funciones o métodos. Bien sea asignandola a una variable (función callback con nombre)o bien mediante una expresión (función callback anónima).

Son muy utilizadas en los métodos del objeto array, en JSON y en el objeto función. También son muy útiles para manejar los eventos de las páginas web, que a fin de cuenta también son objetos para javascript.

Estas funciones pueden definirse como es habitual: con su nombre y la palabra clave function, o pueden definirse in situ sin nombre, como función anónima.

Un ejemplo que usa una función definida para poner a 0 los elementos menores que 5. En los array las funciones callback reciben tres argumentos: valor del elemento, indice y el array.

var numeros = [3,6,7,2,9];

var copia = new Array(personas.length);

var copiar = function(v,i,a){

      if(v<5) { a[i] = 0}

}

numeros.forEach( copiar )

console.log(numeros);

Un ejemplo muy simple con la función callback en modo función anónima

var datos = [23, 2,12,11];

var copiar = function(v, i, a) { a[i] = 2*v };

datos.forEach( copiar)

console.log(dato);

En el ejemplo se dobla el valor de cda elemento de la lista.

Ejemplos

Las funciones callback son usadas en el objeto array y en el JSON, pero pueden usarse en cualquier método o función definido en el pograma.

function areaTr(a,b){ return a*b/2};

function areaRec(a,b){ return a*b};

function calcularArea(area, a,b) { return area(a,b) }

var area1 = calcularArea(areaRec,4,5);

var area2 = calcularArea(areaTr,4,5);

console.log("Area rectángulo " + area1)

console.log("Area triángulo " + area2)

En proceso asíncronos se usan funciones callback para realizar las acciones que se requieran al finalizar el proceso. Es el caso de los eventos de tiempo para animaciones en el navegador.