Pure Functions vs Closure

Estela Parrado
1 min readApr 23, 2018

--

Siguiendo el libro Javascript Allongé (disponible para su lectura online clicando sobre el nombre), hoy me gustaría profundizar sobre dos conceptos que, desde mi posición de súper júnior, he considerado fundamentales para comprender el funcionamiento interno de Javascript. Hablo de las Pure Functions y de las famosas Closures.

Estos dos tipos de funciones son radicalmente distintas. Por un lado, las Pure Functions son aquellas funciones que no contienen variables libres, o lo que es lo mismo, variables globales. Sólo necesitan la información contenida en su propio ámbito, o scope, para ejecutarse. Un ejemplo:

function pureFun (a, b) {    var c = 1;    return a + b + c;}

En el lado opuesto encontramos aquellas funciones que sí necesitan información externa a sí mismas, información global, para poder ejecutarse. Es decir, las Closures son funciones que contiene una o más variables libres. Como vemos en el ejemplo, la función closure necesita la información de la variable “libre” (definida en el scope global) para ejecutarse.

var libre = 0function closure () {    var c = 2;    return libre = libre + c;}

Podemos encontrar algún caso curioso de falsas closures que nos hagan creer que son funciones que necesitan variables globales pero en realidad no. Como vemos en el ejemplo podríamos pensar que libre no está definida dentro del scope de noEsClosurePorSuArgumento, y realmente no lo está, sino que libre es un argumento que al que le asignaremos valor cuando queramos ejecutar la función.

 function noEsClosurePorSuArgumento(libre){     libre = libre + 1;     return libre; }

--

--

Estela Parrado

Front-end Developer y Diseñadora Gráfica. #Adalaber #GeneracionK en @kairos_ds