ahora hablemos de
una propiedad fundamental del lenguaje JavaScript.
Que es el hecho de que tiene funciones de primera clase.
Esto nos permite escribir funciones de orden superior.
¿Pero de qué se trata todo eso?
Bien, veamos.
Entonces, JavaScript es un lenguaje que tiene funciones de primera clase.
que en términos técnicos
significa que las funciones son los llamados primeros ciudadanos.
En la práctica, eso significa que las funciones
simplemente se tratan como valores.
Y ya tocamos esa idea.
un par de veces antes,
pero esta es una característica tan importante del lenguaje
que vale la pena pasar más tiempo hablando de esto.
Ahora, ¿por qué JavaScript funciona de esta manera?
Bueno, es simplemente porque las funciones
son realmente otro tipo de objetos en JavaScript.
Y como los objetos son valores,
Las funciones también son valores.
Y como las funciones son valores,
hay un monton de cosas interesantes
que podemos hacer con ellos,
como almacenarlos en variables o propiedades de objetos.
Y eso, por supuesto,
ya lo hicimos un par de veces antes.
Así que los valores de la función aquí están marcados en rojo,
y luego verás, creamos una expresión de función
en el primer ejemplo y un método de objeto
en el segundo ejemplo.
Así que el valor en el rectángulo rojo
es el valor de la función en sí,
que podemos guardar donde queramos.
También podemos pasar funciones como argumentos a otras funciones.
Y de hecho ya lo hicimos antes
al agregar detectores de eventos o controladores de eventos
a los objetos tontos.
Así que aquí tenemos la función de añadir detector de eventos.
que ya sabes,
y claramente pasamos la función de saludar
en la función de agregar nota de la lista de eventos
aquí como un valor, ¿verdad?
Ahora, para hacerlo aún más interesante,
también podemos devolver una función desde otra función.
Eso suena un poco loco,
pero puede ser muy útil.
Finalmente, recuerda que las funciones son objetos.
Y muchos tipos de objetos en JavaScript tienen métodos, ¿verdad?
Como métodos de matriz, por ejemplo.
Y en realidad también hay métodos de función.
Entonces métodos que podemos llamar a funciones.
Entonces, de nuevo, eso suena un poco loco, ¿verdad?
Pero veremos cómo usar esto a nuestro favor.
a lo largo de esta sección.
Este método de enlace aquí es un ejemplo de eso.
Y nuevamente, aprenderemos sobre el método bind.
a medida que avanzamos en la sección.
Está bien.
Ahora, el hecho de que JavaScript tenga funciones de primera clase
hace posible que usemos y escribamos
funciones de orden superior.
Entonces una función de orden superior
es una función que recibe otra función
como argumento,
o una función que devuelve una nueva función.
Así que echemos un vistazo a ambos tipos aquí.
Primero, para funciones que reciben otra función.
tenemos el mismo ejemplo que antes.
Así que aquí, la función de agregar detector de eventos
es la función de orden superior.
¿Y por qué?
Bueno, porque recibe otra función como entrada.
En este caso, la función de saludo.
Y solemos decir que la función que se pasa en
es una función de devolución de llamada.
Eso es porque la función de devolución de llamada se llamará más tarde.
por la función de orden superior.
En este caso,
agregar el detector de eventos llamará a la devolución de llamada de saludo más tarde
tan pronto como ocurra el evento de clic.
Es como la función de saludo que dice:
"Hola, no me saludes todavía,
pero llámame una vez que estés listo".
Y esto funciona, no sólo en el contexto
de la función de añadir detector de eventos,
pero también en muchos otros casos de uso.
Bien, segundo,
también podemos tener funciones que devuelvan otra función.
Así que aquí tenemos la función de orden superior.
Así que básicamente todo este bloque de código,
que claramente devuelve una nueva función,
cual es este
Y este estilo de funciones
también se usa mucho en JavaScript.
Pero también es más avanzado,
y supongo que más difícil de entender.
Te lo mostraré en la próxima lección,
pero exploraremos esto más profundamente un poco más tarde.
Ahora, solo para terminar,
parece haber cierta confusión entre
funciones de primera clase y funciones de orden superior.
Algunas personas piensan que son lo mismo.
Pero en realidad significan cosas diferentes.
Entonces, las funciones de primera clase son solo una característica
que un lenguaje de programación tiene o no tiene.
Todo lo que significa es que todas las funciones son valores.
Eso es todo.
No hay funciones de primera clase en la práctica, ¿de acuerdo?
Es solo un concepto.
Sin embargo, existen funciones de orden superior en la práctica,
que son posibles porque el lenguaje soporta
funciones de primera clase.
Así que es una diferencia sutil,
pero aún así vale la pena señalar si quieres poder hablar
como un verdadero maestro de JavaScript.
Excelente.
Ahora, en la próxima conferencia,
vamos a crear o poseer funciones de orden superior.