Skip to content

Instantly share code, notes, and snippets.

@ivanbtrujillo
Created January 29, 2018 14:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ivanbtrujillo/85e5090bc3ab13d6cf5c5ed8bec2645c to your computer and use it in GitHub Desktop.
Save ivanbtrujillo/85e5090bc3ab13d6cf5c5ed8bec2645c to your computer and use it in GitHub Desktop.
Higher Order Functions
// Las Higher Order Functions nos permiten reutilizar código en Javascript
/*
Partiendo de este ejemplo, tenemos dos funciones en las cuales en una reemplazamos el saludo coloquial por uno mas
formal, y por otro lado lo mismo pero a la hora de despedinos.
*/
var saludoFormal = function(texto) {
return texto.replace(/Hola/ig, "Buenos días");
};
var despedidaFormal = function(texto) {
return texto.replace(/Adiós/ig, "Hasta mañana");
};
console.log(saludoFormal("Hola Iván"));
// Buenos días Iván
console.log(despedidaFormal("Adiós Ivan"));
// Hasta mañana Iván
/*
Como puedes ver, la logica es muy parecida en ambos casos. Podemos utilizar una funcion Higher Order para unificar
el comportamiento que se repite.
*/
var replaceFunction = (original, replacement, source ) => {
return function(source){
console.log('SOURCE INSIDE: '+source)
return source.replace(original, replacement);
}
}
/*
Creamos una funcion HOF llamda replaceFunction la cual recibirá tres parámetros:
Original: El texto original a reemplazar
Replacement: El texto por el que se reemplaza
Source: funcion expuesta que recibe un argumento, el cual será el texto a modificar
*/
var saludoFormal2 = replaceFunction(/Hola/ig, "Buenos días");
var despedidaFormal2 = replaceFunction(/Adiós/ig, "Hasta mañana");
/* En saludoFormal2 y despedidaFormal2 almacenamos la funcion que nos devuelve replaceFunction, es decir, source)
Debido a esto, cuando llamamos saludoFormal2("Hola Iván") estamos pasandole a través de source el texto a modificar.
*/
const nuevoSaludo = saludoFormal2("Hola Iván");
const nuevaDespedida = despedidaFormal2("Adiós Iván");
console.log('Saludo con HOC: '+nuevoSaludo);
console.log('Despedida con HOC: '+nuevaDespedida);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment