2.1 Scope, pure functions and closures - TeresaMarbanCastro/Learning-Kairos GitHub Wiki
FUNCIÓN PURA: hace referencia a variables que se definen en su scope o a sus argumentos. Y no alteran la aplicación ni provocan un cambio de estado.
FUNCIÓN CLOSURE: hace referencia a variables que no están en su scope.
Las variables son visibles de fuera hacia dentro. Pero no de dentro hacia fuera. Toda función que se refiere a variables que son de fuera ES UNA CLOSURE.
Si sobreescribes una variable tienes que tener en cuenta el ámbito del que va a coger ésta. Hacerle sombra a una variable: shadowing. Una forma de hacer esto también es hacer a una variable argumento.
Cuantas menos variables globales uses mejor, y cuantas más funciones puras uses mejor.
En JS usas closure sólo por privacidad.
Una función PURA no debe cambiar nada del sistema. Es imposible programar todo con funciones puras.
Con ES6 las variables pasan a usarse sólo en bloques definidos no en todo lo que haya dentro de la función.