Created
January 29, 2018 14:13
-
-
Save ivanbtrujillo/85e5090bc3ab13d6cf5c5ed8bec2645c to your computer and use it in GitHub Desktop.
Higher Order Functions
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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