Ahora que sabemos qué son las funciones de orden superior,
vamos a crear el nuestro propio,
solo para demostrar cómo funcionan.
Así que en esta lección, vamos a crear
una función que acepta otras funciones como entrada.
Pero para empezar, escribamos dos muy genéricos
funciones que realizan transformaciones de cadenas simples.
Así que voy a llamar a una palabra
y esto simplemente reemplazará todos los espacios en una palabra.
tan cuerda
punto reemplazar
y luego vamos a seleccionar todos estos espacios.
Y recuerda por eso,
necesitamos usar esta expresión regular
con la bandera G y luego reemplazarlos
simplemente con una cadena vacía.
Y luego también lo convertimos a minúsculas.
Bueno,
entonces esta función aquí,
lo que simplemente funciona en cualquier parte de nuestro código con cualquier cadena
y toma una cadena y regresa
uno nuevo sin ningún espacio en él.
Bien, vamos a crear otra primera palabra superior,
que también toma una cadena.
Y entonces estas dos funciones,
luego serán las funciones que pasemos
en otra función.
Bien, entonces primero necesitamos estos.
Como su nombre lo dice, esta función
aquí simplemente transformará la primera palabra
de la cadena de entrada a mayúsculas.
Entonces, primero dividamos la cadena.
Así que por la cadena vacía,
y luego tomaremos los resultados
y reestructurarlo en la primera palabra.
Y luego todas las otras palabras,
Y luego devolver una nueva matriz a la que nos uniremos.
Así que eso es primero en mayúsculas
y aquí no estoy explicando exactamente cómo funciona todo esto,
porque ya hablamos de estas cosas,
en el último vídeo.
Entonces repartimos los demás y también en la matriz.
y luego nos unimos.
Y así ves que todo lo que aprendimos antes
en realidad es bastante útil,
de nuevo como siempre, especialmente útil,
es difundir el operador y la asignación destructiva.
Como lo usamos aquí.
Correcto, y aquí está en realidad el patrón de descanso.
Muy bien, entonces tenemos estas dos funciones genéricas
y ahora podemos crear una función de orden superior.
Y esa función se llamará transformador.
y estas funciones tomaremos también una cadena,
pero como segundo argumento,
asumirá una función.
Bien, y por lo tanto esta es una función de orden superior.
Así que esa es la definición que nosotros
aprendido en el último video.
Entonces toma una función
y el aire porque es una función de orden superior.
Y ahora vamos a ver cómo
en realidad llamaríamos a esta función.
Así es como me gusta hacerlo muchas veces.
Así que digamos que JavaScript es el mejor.
Y como segundo argumento,
Ahora pasaré a la función de la primera palabra superior.
Y básicamente lo que quiero es la función de transformador.
ahora para hacer con esta cadena,
es transformar la cadena usando estas funciones aquí.
Así que esta función que creamos aquí al principio.
Está bien,
y una vez más aviso
cómo solo estamos pasando el valor de la función en sí.
Así que realmente solo el valor,
no estamos llamando a esta función aquí.
De acuerdo, solo lo estamos pasando y será para
función de transformador llamando a esta función.
Así que vamos a hacer eso.
Así que simplemente miraremos a la consola transformada
cadena significó y aquí va nuestra expresión.
Y aquí es donde ahora llamaremos a la función.
Ahora, dentro de la función del transformador,
esta sala superior ahora se llama FN, ¿verdad?
Así que ese es el segundo parámetro aquí.
Y así FN y luego con el pasado en cadena.
Bueno,
y cuando vemos el resultado,
esto tendrá aún más sentido.
Bien, eso también es un bloqueo para la consola,
la cadena original.
Y eso es solo STR, está bien.
Y también quieren mostrarte algo más.
Así que miremos transformados por,
y en el ultimo video te lo dije
que las funciones incluso tienen métodos recuerda,
y además de los métodos,
Las funciones pueden incluso tener propiedades.
Y uno de ellos es la propiedad del nombre.
Así que de nuevo tomamos FN,
cual es la funcion que
este transformador de orden superior se obtiene como entrada.
Y luego podemos leer la propiedad del nombre.
Y ahora veamos el resultado de esta operación.
Así que echemos un vistazo a nuestro interesante resultado.
Entonces, por supuesto, la cadena original parece familiar,
pero entonces la cadena transformada de hecho,
se transformó tal como esperábamos.
Así que la primera palabra es mayúscula.
Y ese es, por supuesto, el trabajo de esta función aquí.
Finalmente, también podemos ver que
fue transformado por la primera palabra superior.
Y eso es FN.Name.
Entonces, como dice la propiedad,
en realidad es solo el nombre de la función.
Y entonces este de aquí en realidad podemos
usar en cualquier funcionamiento que tengamos en JavaScript.
Y ahora intentemos lo mismo,
aquí con nuestra otra función.
Así que una palabra, y veamos el resultado.
Démosle un poco más de espacio aquí.
Y aquí está la segunda salida.
Entonces, para transformar la cadena, ahora es esta aquí,
todo en una palabra y de hecho fue
transformada por la función de una palabra.
Así que este de aquí,
¿está bien?
Así que recapitulemos, estamos llamando a la función de transformador aquí
y en esa función estamos pasando la función de devolución de llamada
y recuerda que llamamos a estas funciones que pasamos.
Así que este y este,
las funciones de devolución de llamada.
Y eso es porque no los llamamos nosotros mismos.
Pero en su lugar, llamamos a JavaScript para básicamente decirles más tarde.
Y en este caso,
llamarlos más tarde sucede aquí mismo.
Entonces es la transformada de la función.
que llamará a estas funciones de devolución de llamada.
Y las funciones de devolución de llamada,
aquí, por supuesto, se llaman FN.
Y entonces, ese es el nombre de la función aquí.
que luego tenemos que llamar.
Está bien,
y de hecho esta es exactamente la misma idea
que ya hablamos,
usando la función de agregar oyente de ventilación.
¿Bien?
Entonces, digamos que tenemos esto
función muy simple choca esos cinco,
que realmente no hace mucho excepto desactivar
registrando algo en la consola.
Pongamos un emoji aquí,
esta saludando y ahora digamos,
document.Buddy.End event listener click
y luego esta función.
Así que no importa esta parte aquí.
Vamos a aprender más tarde lo que esto significa,
pero lo que importa es el detector de eventos de adición?
Y así como,
o una función de transformador que pasamos en una función de devolución de llamada.
De acuerdo, ¿y la función de devolución de llamada en esto?
también se denomina controlador de eventos o detector de eventos,
pero eso realmente no importa.
Lo que importa es que conceptualmente,
este año es la función de devolución de llamada,
y esta es la función de orden superior.
Así que esta es como nuestra función de transformador.
Y esta es como la palabra única o la primera palabra superior.
Bueno.
Entonces es solo una devolución de llamada que JavaScript,
llamará tan pronto como hagamos clic en el cuerpo.
Así que verás ahí abajo ahora que aparecen.
Y así, sólo entonces se vuelve a llamar realmente.
Y hay muchos otros ejemplos
en el lenguaje JavaScript.
Y este concepto de funciones de devolución de llamada se utiliza
todo el tiempo en funciones JavaScript integradas.
Así que hay muchos más ejemplos,
por ejemplo el para cada
función y que llamamos a una carrera.
Así que vamos a crear una matriz aquí.
Jonas, Marta y Adán.
Y en esa matriz, podemos llamar
algo llamado D para cada método.
Y aprenderemos sobre esto.
uno en la siguiente sección en realidad.
Y luego otra vez,
pasamos una función de devolución de llamada a for each.
Así que volvamos a chocar los cinco.
Y mientras vuelvo a cargar esto ahora,
entonces llegamos aquí estas tres olas bien.
Y eso es porque tenemos tres elementos en esta matriz.
Y como dice el nombre del método,
para cada uno de ellos se llamará a esta devolución de llamada.
Y por lo tanto tenemos tres esferas ondulantes,
pero vamos a aprender todo sobre el
para cada método en la siguiente sección.
Lo que importa aquí es que una vez más,
aquí usamos el concepto de la función de devolución de llamada.
Y esto es algo muy común en JavaScript.
Déjame escribir eso aquí,
devoluciones de llamada todo el tiempo.
Así que ahora tomemos uno o dos minutos
para entender por qué es eso.
¿Por qué nuestras funciones de devolución de llamada se usan tanto en JavaScript?
y ¿por qué son tan útiles?
Bueno, la primera gran ventaja de este
es que facilita dividir o codificar
en partes más reutilizables e interconectadas.
Así que eso es exactamente lo que tenemos aquí, correcto.
Tenemos toda esta funcionalidad aquí,
muy bien divididos en sus propias funciones,
y eso en sí mismo es realmente útil.
Pero hay una segunda ventaja mucho más importante,
cuál es el hecho de que las funciones de devolución de llamada
nos permite crear abstracción.
Así que déjame explicarte lo que eso significa.
Así que lo que hicimos aquí en nuestro ejemplo de código fue crear un
nivel de abstracción y abstracción
es algo realmente importante en la programación.
Entonces, básicamente, lo que es abstracto y significa,
es que ocultamos el detalle de algún código
implementación porque realmente no nos importa
sobre todo ese detalle.
Y esto nos permite pensar
sobre problemas a un nivel superior más abstracto.
Y por eso se llama obstrucción.
Así que volviendo a nuestro ejemplo aquí,
esta transformada a una función no le importa en absoluto,
cómo se transforma la cadena.
No le importa este nivel de detalle.
Bien, todo lo que quiere hacer es transformar una cadena,
pero no le importa cómo debe hacerlo.
Entonces, lo que quiero decir es que podríamos haber tomado,
este abrigo aquí y lo escribí directamente en el transformador,
o incluso este abrigo aquí,
bien.
Eso habría funcionado igual,
pero en cambio abstrajimos esto
recubrir en otras funciones.
De nuevo, creamos un nuevo nivel de obstrucción
y al hacer esto o la función de transformador principal,
aquí realmente solo se preocupa
con la transformación de la propia cadena de entrada.
Pero no importa cómo funcione esa transformación en sí misma.
Básicamente es delegar la transformación de cadenas
al otro nivel inferior de funciones,
cuales son estos dos.
Bien, y espero que esto tenga sentido para ti,
pero también volveremos a esta idea de abstracción
más adelante cuando hablemos de programación orientada a objetos.
Pero es bueno que pienses
y hablar de estas cosas lo antes posible,
para que puedas empezar a tener una idea de esto realmente,
importante concepto de abstracción.
Y ahora con esta idea de obstrucción
y niveles más altos y niveles más bajos de obstrucción,
aquí se llama una función de orden superior.
Correcto, y de nuevo eso es básicamente porque esta función
aquí opera a un nivel más alto de obstrucción,
dejando los detalles de bajo nivel a estas funciones de bajo nivel.
Bueno.
Ahora no se llaman realmente
hola orden o funciones de bajo nivel,
pero así es como me gusta llamar
ellos en esta circunstancia.
Está bien,
asi que entendiendo esto
es absolutamente crucial para su proceso.
Y de hecho considero que este es uno de los más
conferencias importantes aquí del curso
porque las funciones de devolución de llamada son realmente,
una parte vital del lenguaje JavaScript.
Y esa es una de las principales conclusiones de este video.
Nos permiten crear este tipo de lógica aquí.
Entonces, creo que probablemente sea una buena idea,
ese que de verdad nos reseñó muy bien
y tal vez incluso escriba su propio ejemplo,
de algo que ves en el mundo real
utilizando el mismo concepto,
bueno.
Creo que es una muy buena idea que deberías probar.
Luego aquí en las funciones integradas como
agregue un detector de eventos y para cada uno,
estas funciones de devolución de llamada son muy importantes
y tan útiles porque los usamos,
para decirle a estas funciones qué es exactamente lo que deben hacer.
Por ejemplo, la función de añadir detector de eventos
por sí solo no tendría idea
de qué hacer cada vez que ocurra el evento de clic aquí.
¿Bien?
Y es por eso que pasamos la función de devolución de llamada aquí,
para decirle a la función de escucha de eventos add exactamente qué hacer.
Y como ya sabes,
esta es la función de orden superior aquí
con el alto nivel de obstrucción.
Y esta aquí es la función con,
cuanto más bajo sea el nivel de obstrucción.
Está bien.
Pero basta de hablar,
tómese un minuto para revisar realmente esta conferencia
y construir un ejemplo propio tal vez.
Y luego te veo en el siguiente video,
donde básicamente haremos lo contrario de este.
Entonces, tener funciones devuelve otras funciones.