Closures

  1. JavaScript te permite referir a las variables que fueron definidas afuera de la función actual
var foo = 1;

function bar(){
    console.log(foo);
}

2. Las funciones pueden referir a variables definidas en funciones exteriores incluso después de que esas funciones hayan retornado.

function foo(){
    var baz = 53;
    function bar(){
        console.log(baz);
    }
    return bar;
}

var fn = foo();
console.log(fn());

3. Las closures pueden modificar los valores de las variables del ámbito externo

var foo = 1;
function bar(){
    foo = 5;
}

bar();
console.log(foo);

IIFEs

O Immediately-Invoked Function Expression

  • Utilizadas generalmente para crear ámbitos sin necesidad de declarar una función.
  • Aparecen en muchas librerias por la necesidad de no ensuciar el ámbito global con variables 

Higher order functions

Aplicación parcial -> retorna una nueva función

Aplicación total -> retorna un valor

Ejemplo

Dado una cadena de caracteres, buscar las palabras que contengan la letra recibida por parámetro

function contarApariciones(str, letra) {
    var palabras = str.split(' ');
    var contador = 0;
    for (var i = 0; i < palabras.length; i++) {
        for (var j = 0; j < palabras[i].length; j++) {
            if (palabras[i][j] === letra) {
                contador++;
                break;
            }
        }
    }
    return contador;
}

Closures

By Alejandro Oviedo García

Closures

  • 2,273