JavaScript está clos-ure a la Programación Funcional

Aida
2 min readApr 1, 2019

¿Por qué JavaScript admite con agrado la programación funcional? — Closures

Vector creado por pch.vector — www.freepik.es

Antes de nada, perdón por el chiste tan malo del título. Tengo alrededor unos compañeros de trabajo que me han pegado este terrible (y en el fondo maravilloso) humor.

Una de las razones por las que la programación funcional y JavaScript se llevan bien es la existencia en éste de las closures.

¿Por qué?

Porque permiten ir usando de forma parcial los parámetros. Me voy a explicar, porque yo antes creía entender las closures pero no es hasta ahora que he comprendido el potencial de las mismas.

¿Qué son las closures?

Lo primero es lo primero: qué es una closure.

Son funciones que manejan variables independientes. A mí esto me suena a chino, así que explicándolo con mis palabras de dummie, son funciones que están dentro de otra función y que son capaces de interpretar los datos que ésta le pasa. Pueden incluso no tener ningún parámetro o variable definida dentro, pero sí hacer cosas con las variables que le vienen en su ámbito cercano (el del padre que la contiene).

Un ejemplo inútil:

La función closure no tiene declarada ninguna variable, es libre como el viento, pero es capaz de leer la de su progenitor.

Vale, y esto ¿qué tiene que ver con la programación funcional?

Bueno, imaginemos que la función anterior hiciera esto:

Ahora vemos que la función padre retorna la función closure, por lo tanto, podríamos asignar la función padre a una variable y cuando ésta se ejecute, se ejecutaría no sólo la función inutilPadre, sino también la closure.

Mmmm pues ahora que veo esto… me suena como de algo… Anda, claro! Las funciones currificadas!

Las closures nos van a permitir definir funciones (padre) que aplican un parámetro y devuelven otra función (closure) con otro parámetro diferente y así sucesivamente. A ver si podemos ver un ejemplo no tan inútil:

Se me acaba de ocurrir este ejemplo y me están hasta entrando ganas de aplicarlo a mis proyectos, con eso te lo digo “to”.

--

--

Aida

If something does not work, ACT. Yes, you! That’s why I’m now #Developer at @vmware . Formerly @kairos_ds .Constantly absorbing knowledge. Proud #Adalaber