Funciones de JavaScript: funciones maestras, funciones de flecha con proyectos | Faisal Memon | Skillshare
Buscar

Velocidad de reproducción


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Funciones de JavaScript: funciones maestras, funciones de flecha con proyectos

teacher avatar Faisal Memon, Product | Engineer | Entrepreneur

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      Introducción al curso

      2:13

    • 2.

      Desbloquear funciones de JavaScript: fundamentos

      6:22

    • 3.

      Flujo de datos dinámico: dominio de los parámetros y argumentos

      21:47

    • 4.

      Salidas de funciones al descubierto: explicación de los valores para la devolución

      15:47

    • 5.

      Elabora código: explora expresiones funcionales en JavaScript

      6:15

    • 6.

      Fundamentos modernos de JavaScript: dominio de las funciones de flecha

    • 7.

      Cómo potenciar los objetos: aprovechar las funciones dentro de ellos

      14:35

    • 8.

      Matrices de supercarga: métodos avanzados en JavaScript

      28:44

    • 9.

      Foco del proyecto: construye tu propio convertidor de unidades

      24:12

    • 10.

      Exhibición de proyectos: crea una aplicación dinámica de lista de tareas pendientes con JavaScript

      29:26

    • 11.

      Conclusión del curso

      1:52

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

23

Estudiantes

--

Proyectos

Acerca de esta clase

Las funciones son los bloques de construcción de JavaScript, haciendo que tu código sea reutilizable, eficiente y modular. En este curso, te sumergirás en funciones, métodos y proyectos del mundo real para consolidar tus habilidades de JavaScript mediante el aprendizaje práctico.

Este curso apto para principiantes te guiará paso a paso, desde la comprensión de los conceptos básicos de la función hasta su aplicación en proyectos prácticos como un convertidor de unidades y una aplicación de listas de tareas.

Qué aprenderás:

Funciones de JavaScript: aprende a declarar y usar funciones de manera efectiva.
Trabajar con parámetros y argumentos: comprende cómo pasar valores a funciones dinámicamente.
Valores de retorno y expresiones de funciones: domina cómo procesan las funciones y devuelven datos.
Funciones de flecha: escribe funciones modernas y concisas con la sintaxis de ES6+.
Funciones dentro de objetos: aprende a estructurar objetos con funciones integradas.
Métodos de matrices - Descubre cómo las funciones interactúan con matrices para manipular datos.
Proyectos prácticos: crea aplicaciones del mundo real, como un convertidor de unidades y una aplicación de lista de tareas, para aplicar tus conocimientos en escenarios prácticos.

¿Por qué tomar este curso?

  • Para principiantes: ¡no se necesita experiencia previa! Aprende las funciones de JavaScript desde cero.
  • Enfoque práctico: refuerza el aprendizaje con ejercicios interactivos y proyectos prácticos.
  • Aplicación real: usa funciones para crear aplicaciones dinámicas y útiles.

Al final de este curso, entenderás mejor las funciones de JavaScript, podrás comprender mejor cómo funcionan y podrás incluir proyectos reales para agregar a tu portafolio.

Conoce a tu profesor(a)

Teacher Profile Image

Faisal Memon

Product | Engineer | Entrepreneur

Profesor(a)

Hey - this is Faisal and thanks for being here.

I have over 12 years of experience working as a Product Manager Founder/CEO Engineer in Mobile and App development industry. I have been building global products being used by millions of users across the globe since the beginning of my career.

Currently I am heading Product at one of the fast-paced startup in India and enjoying every moment of it. Prior to his, I built out couple of startups which had over half a million users across the globe, raised funding from Google other investors and was part of Google Launchpad Accelerator. I have experience of building products from scratch and scaling to global users.

I am here on Skillshare to share my knowledge with seekers and help them grow personally and professional... Ver perfil completo

Level: All Levels

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. Introducción al curso: Oye, ahí. Bienvenido a las partituras en funciones de JavaScript mediante la construcción de proyectos reales. Mi nombre es Wessel, y estoy encantado de guiarte a través este emocionante viaje al mundo de las funciones de JavaScript. Las funciones son la columna vertebral de JavaScript o cualquier lenguaje de programación que aprendas. Permite un código eficiente y modular que los desarrolladores pueden escribir. Y en este curso, profundizaremos en este concepto de funciones desde los fundamentos de definir y llamar a funciones hasta comprender parámetros, argumentos. También hablaremos sobre lo básico como llamar a funciones a los temas avanzados como expresiones, funciones de flecha e incluso métodos dentro de objetos y matrices. Ahora bien, esto es lo que vamos a cubrir. Hablaremos de funciones en JavaScript. También hablaremos de parámetros y argumentos. Qué son los parámetros y cómo estos dos términos se diferencian entre sí. Cómo se pueden devolver valores de una función aquí hablaremos sobre cómo función procesa los datos y devuelve los valores. Hablaremos expresiones de función y funciones de flecha. Este es uno de los temas cruciales donde los alumnos suelen enfrentar dificultades. También hablaremos de funciones dentro objetos y métodos de matriz. Entonces esto es todo acerca del curso, y este curso también tiene proyectos prácticos en los que estaremos aplicando todo lo que hemos aprendido en este curso en particular para construir algo significativo. Al final, tendrás una comprensión sólida de qué son las funciones, y este conocimiento te permitirá crear programas interactivos y sorprendentes de Guiones de mandíbula. Este curso es apto para desarrolladores de todos los niveles. Entonces, tanto si eres principiante, aprendiz intermedio o alguien que está avanzado y busca repasar sus habilidades Jascript, este curso te puede equipar con conocimientos increíbles y algunas prácticas que nunca antes habías escuchado Entonces con eso dicho, ¿estás listo para dominar el arte de las funciones de Ja Script y transformar la forma en que escribes vamos a sumergirnos y comenzar juntos Te veré del otro lado. 2. Desbloquear funciones de JavaScript: fundamentos: Oye, ahí, así que ahora es el momento de que comencemos a hablar de funciones en JavaScript. Ahora bien, ¿qué es una función ante todo? Ahora, una función es esencialmente un bloque de código. Entonces son múltiples líneas de código las que se agrupan, y está diseñado para realizar una tarea específica. La mejor parte de la función es que se puede reutilizar varias veces en todo el programa Ahora, déjame mostrarte cómo escribirías funciones y por qué escribirías, entonces. ¿Bien? Entonces digamos que tenemos una tarea muy sencilla de saludar a un usuario. ¿Bien? Entonces voy a saludar y digamos que estoy saludando a un usuario. Un nombre de usuario es Alice Awa. ¿Bien? Yo estoy haciendo esto. Ahora digamos que deseo hacer este saludo en tres ocasiones. ¿Bien? Entonces, claro, voy a Copiar P tres veces. Entonces lo estoy saludando tres veces, ¿verdad? Saludo al usuario tres veces. Ahora digamos que deseo cambiar un mensaje por aquí en el saludo, ¿verdad? Y debería reflejarse a través de todos los mensajes. Entonces digamos que el cambio que deseo hacer es agregar una exclamación más ¿Bien? Ahora tengo que asegurarme de actualizar esto en todos los lugares donde quiera que esté haciendo uso de esta rejilla. Y si guardo esto, voy a ver la salida aquí arriba. Todo bien. Pero ahora esto está bien si el grupo de declaración como por aquí, la tarea es sólo saludar, ¿verdad? Es solo una sola pieza de declaración, y cualquier cambio aquí es manejable porque la base de código no es tan grande Ahora bien, lo que me gustaría hacer es que me gustaría dirigirme hacia la conveniencia, ¿verdad? Y podemos aliviar esto con la ayuda de la función. Ahora, déjame mostrarte cómo las funciones pueden hacerte la vida más fácil. Entonces, antes que nada, necesito crear una función por aquí para que podamos usarla. Entonces puedo hacer uso de esta palabra clave de función. Se puede ver. Y tienes dos opciones, sentencia de función y función por aquí. Si selecciona función, traerá la función para usted, la palabra clave. Pero me gustaría tener la declaración de función. Para que pueda ver esto apareció. Ahora, se agrega automáticamente un marcador de posición para los params de nombre, y ha agregado estas llaves Así que voy a actualizar el nombre por aquí para saludar, ¿de acuerdo? Y en lugar de params, sólo voy a quitar esto por ahora y voy dentro del cuerpo Así que esta llave rizada, ¿de acuerdo? Dentro de estos tirantes rizados, puedes tener la función cuerpo, ¿verdad Yo uso este término función cuerpo. Ahora bien, ¿qué es el cuerpo de función? cuerpo de la función es el bloque de código que se puede ejecutar cuando se llama a esta función, ¿de acuerdo? Entonces digamos que muevo este código por aquí. Bien. Y ahora no necesito llamar al saludo de esta manera o saludar al usuario de esta manera. Bien. En cambio, lo que puedo hacer es que puedo llamar a esta función, ¿verdad? Así que ahora tengo esta función saludar, ¿de acuerdo? El nombre de la función es greet. Entonces, cada función que crees debe tener un nombre, ¿de acuerdo? Y le estás asignando un nombre porque necesitas llamar a esa función más adelante, ¿verdad Entonces ahora si quiero llamar a esta función, voy a decir saludar, y voy a tener corchetes redondos abriendo y cerrando. Ahora bien, si guardo esto, verás que Hello Alice ahora se está imprimiendo por aquí, ¿de acuerdo? Si quiero saludar al usuario tres veces, como mi requerimiento original, puedo tener esto llamado tres veces, y verás que aparece Ahora bien, si quiero cambiar el mensaje, así que digamos que si quiero deshacerme de esta exclamación extra que se agregó, tengo que hacer ese cambio en un solo lugar, Y se refleja en todas partes, y se refleja en todas partes, esencialmente, donde sea que se llame a esta función, o porque es el único bloque de código que se está reutilizando y se llama varias veces Aquí, en este enfoque, lo que estás haciendo es que estás duplicando el código Estás duplicando el registro de puntos de la consola tres veces para que esta tarea suceda tres veces, ¿verdad? Pero por aquí, no estás duplicando el código. Estás teniendo escrito una vez el registro de puntos de la consola. Pero si quieres hacer esta tarea tres veces, estás llamando a la función dos veces porque esta instrucción de registro de puntos de consola está dentro de una función ahora. ¿Todo bien? Entonces volvamos a la definición. Una función es un bloque de código. Se puede ver que esto es un bloque de código. Ahora puedes tener múltiples declaraciones por aquí. Digamos que también quiero saludar al usuario y decir que ya estás conectado. Bien, algo como esto. Estoy mostrando este tipo de mensajes. ¿Bien? Puedes ver Hola Alice, ahora estás logueado. Hola Alice, ya estás logueado. Hola Alice, ahora estás encerrado. Viene en tres veces cada mensaje. ¿Bien? Entonces es un bloque de código. Ahora, dentro de las llaves Curly, puedes tener múltiples líneas de declaración, múltiples líneas de código JavaScript, que es parte de esta función y se invoca o llama cada vez que se llama a esta función Y la siguiente parte dice que está diseñada para realizar una tarea específica. Básicamente, está agrupando múltiples declaraciones y lo está nombrando como función y esto está diseñado para realizar una tarea en particular Por ejemplo, por aquí, está diseñado para saludar al usuario, ¿verdad? Y estás haciendo uso de esta palabra clave de función por aquí. Esto es algo que no se puede perder si estás creando funciones de esta manera, ¿de acuerdo? Y se puede reutilizar varias veces. Así que ahora estás llamando a este bloque de código tres veces por aquí, ¿verdad? Ni una, dos veces. Y puedes llamarlo número de veces, como número de veces que quieras llamarlo o el requisito es. ¿Correcto? Entonces esa es una función para ti en JavaScript. Ahora bien, si vienes de cualquier otro lenguaje de programación como Python o Java, debes estar al tanto de este concepto de función o métodos, derecho. Entonces funciona de la misma manera en JavaScript, pero la sintaxis es un poco diferente. ¿Bien? Entonces espero que esto haya sido útil. 3. Flujo de datos dinámico: dominio de los parámetros y argumentos: este momento, tengo una función llamada GET, que se utiliza para saludar a los usuarios. Y aquí en este bloque de código, estoy teniendo toda la operación de saludar a los usuarios. Y la operación es que hay un par de declaraciones de impresión como sentencias de registro de consola que están imprimiendo dos mensajes, dos mensajes distintos en la consola. Estoy llamando a esta función tres veces. Y como resultado, está viendo que seis mensajes se imprimen en la consola, ¿verdad? Ahora, por aquí, el mensaje que estás viendo es bastante estático. ¿Y si en el futuro o en el futuro, deseo personalizar el mensaje para cada usuario, y qué pasa si quiero llamar a cada usuario por su nombre? Porque esta función en este momento solo se está utilizando para saludar a Alice y no a cualquier otro usuario. Entonces, en ese caso, JavaScript te permite pasar parámetros de función como cualquier otro lenguaje de programación. Entonces digamos que deseo tener el nombre como dinámico, ¿de acuerdo? Entonces puedo aceptar nombre por aquí. Todo bien. No estoy especificando el tipo de datos, por favor haga una nota aquí. Y luego por aquí en vez de Alice, lo que estoy haciendo es que estoy teniendo $1 uy, así que voy a tener que agregar $1 y voy a decir Alice Lo siento, Alice no, voy a tener nombre. Y entonces esta será una plantilla lateral, así. Todo bien. Y entonces si guardo esto, voy a obtener error diciendo undefined, porque este nombre aún no se está inicializando, ¿verdad Entonces vamos a estar haciendo eso en breve. Pero el punto que quiero mencionar aquí es esta cosa que estás pasando por aquí, name es un parámetro de función. ¿Bien? Ahora bien, para llamar a la función de la manera correcta con parámetros, hay que pasar algo llamado como argumentos, ¿verdad? Así que por aquí, ahora tendremos que pasar los argumentos de la función porque el nombre va como indefinido. Se puede ver indefinido. Está imprimiendo tres veces, y las tres veces, no está definido, ¿verdad? Así que voy a pasar el nombre por aquí, así puedo decir Alice una vez, luego puedo decir John, y luego puedo decir Lucy, ¿verdad? Y si guardo esto, verás Hola Alice, Hola John, y hola Lucy, ¿verdad? Así que esta cosa de aquí es un argumento, ¿de acuerdo? Estos son argumentos de función que estoy pasando a los parámetros de la función. Entonces, ¿por qué estamos pasando los argumentos? Porque la función está aceptando parámetros. Y aquí se puede ver nombre es el nombre del parámetro que queremos inicializar por aquí, ¿de acuerdo? Y entonces esto se está utilizando dentro de la función cualquier manera que la función desee hacer uso de ella Entonces quiero que todos recuerden la diferencia entre parámetro y argumentos. Ambos no son lo mismo, cierto. Entonces la mayoría de los programadores se confunden y no sé cuál es la diferencia entre un parámetro y el argumento Piensan que son iguales, ¿verdad? Entonces esta cosa de aquí es un parámetro. Si pasa el cursor sobre esto, dirá nombre del parámetro. Y esta cosa de aquí es un argumento porque este es un valor que estás pasando y usando este valor, el parámetro en realidad está inicializado Entonces este es un argumento. Todo bien. Entonces este argumento de función en uso, y esto es parámetros de función que se están declarando. ¿Todo bien? Ahora bien, esta es la función con un parámetro. Habrá escenarios en los que quieras pasar múltiples valores, múltiples argumentos a una función, ¿verdad? Entonces en ese caso, por supuesto puedes tener múltiples parámetros. Aquí, puedo agregar H por aquí, y puedo agregar un registro de consola más por aquí. Bien. Eres de o, voy a decir, imprimiremos el Ho. Bien, algo como esto, y voy a deshacerme de las comas invertidas por aquí y voy a agregar garrapatas Bac. Todo bien. Ahora puedo salvarlos. Bien. Una vez que guardes esto, verás que se está imprimiendo undefined. Ahora bien, esta función acepta dos parámetros, pero estamos pasando en solo uno, ¿verdad? Así que tenemos que pasar en el segundo parámetro también. Entonces puedo decir 22 por aquí. Esto podría ser como 21, y puedes pasar en cualquier edad por aquí. Esto podría ser 29, algo así. Guarda esto, ya verás, Hola Alice, tienes 22 años Ahora estás encerrado. Hola, John, tienes 21 años. Ahora estás encerrado. Hola, Lucy, tienes 29 años y ahora estás encerrado Entonces, ¿qué nos dice esto que la función puede tener múltiples parámetros que puede definir una función ¿Bien? Entonces puedes definir una función con múltiples parámetros, y si estás teniendo una función con múltiples parámetros, necesitas pasar múltiples argumentos también necesitas pasar múltiples argumentos para que pueda inicializarla muy bien Todo bien. Ahora una cosa por aquí quiero tomar nota, quiero que todos ustedes tomen nota es de esta parte del parámetro el primer parámetro de aquí, name es una cadena, y este es un número. ¿Bien? Ahora, al final, lo que puedo hacer es agregar un tipo por aquí, tipo de y simplemente puedo decir edad por aquí. Bien. Y puedo hacer lo mismo por nombre también. Todo bien. Así que vamos a hacer por nombre, escribir apagado, y voy a guardar nombre. Y una vez que lo guarde, ya verás, Hola Alice cadena, tienes 22 años de edad número. ¿Bien? Entonces, un parámetro de función de aquí es un número y el otro es una cadena. Bien. Ahora bien, ¿y si cambio esto a cadena? Déjame guardar esto. Uy. Entonces déjame guardar esto. Ahora ya lo verás por Pousy. Hola, Lucy. Entonces Lucy es una cuerda, y de 29 años también es una cuerda Bien. Pero por lo demás, el primer parámetro es una cadena, y el segundo parámetro es un número por aquí. ¿Bien? Entonces, lo que estoy haciendo es que estoy consiguiendo el tipo de cada uno cambiar el tipo de cada uno para cada llamada de función por aquí. Bien, puedes ver por aquí, y esto es posible porque Ja Script se escribe dinámicamente. Así que no necesitas tener un tipo de datos declarado o definido cuando estás creando variables. Y estos parámetros son esencialmente variables, ¿verdad? Estas son variables que solo existen dentro del bloque de función. Así que este es un bloque de funciones por aquí, ¿de acuerdo? Este rizo llaves que estás viendo dos llaves CRY, esto es lo que es un bloque de función, y este nombre y edad solo existen dentro Entonces, si intentas hacer uso del nombre por aquí, ¿de acuerdo? Lo siento, esto no. Entonces puedo decir consola dot log y déjame decir nombre por aquí. Si trato de hacer eso, no voy a ver ninguna salida. Incluso para H, no voy a ver ninguna salida. ¿Puedes ver bien? Entonces el nombre y la edad solo existen dentro del bloque de funciones y no fuera de eso, ¿verdad? Y estas dos son variables que son parámetros para esta función, ¿de acuerdo? Y puedes cambiar dinámicamente el tipo de los parámetros es lo que puedes ver por aquí, ¿verdad? Entonces sí, esto está completamente escrito dinámicamente. Ahora, otra cosa que quiero destacar por aquí es el orden. De los parámetros y los argumentos importan. ¿Bien? Entonces, por ejemplo, si cambio esta edad por aquí y si cambio de nombre por aquí. ¿Bien? Así que la edad hice primero. Si guardo esto, ya verás, hola número 22, tienes Alice años, lo cual es absolutamente incorrecto, ¿verdad? Porque intercambiamos intercambiamos el pedido por aquí, ¿verdad? Entonces si hago el lado de control por aquí, se puede ver, como, ahora todo es correcto. ¿Bien? Y también, esto tiene que pasarse en el orden. Bien, entonces se inicializa en orden. Por lo que este primer parámetro se inicializará con Ale, 22 se inicializarán con Entonces el orden importa mucho. ¿Bien? Entonces, si estás teniendo diez parámetros, puedes tener como número puedes tener múltiples parámetros. Aquí solo estoy dando ejemplo de uno y dos, pero puedes tener tres, cuatro, cinco, diez parámetros. Eso está absolutamente bien, ¿verdad? Pero si estás teniendo esos muchos parámetros, entonces asegúrate de que estás pasando los valores en orden, y no estás estropeando con el orden porque la salida que obtendrás se estropeará Entonces espero que esto sea hasta el momento tan bueno. Todo bien. Entonces ahora quiero hablar de los parámetros predeterminados, y para eso, lo que voy a hacer es simplemente duplicaré esta función. Voy a copiar y pegar, ¿de acuerdo? Y ya pueden ver, sólo voy a cambiar el nombre de esta función, ¿de acuerdo? Diré saludar a la persona por aquí, y voy a tener solo un parámetro por aquí solo por el bien de la demostración. Bien, me desharé de todas las demás declaraciones de aquí Mantendremos las cosas simples. ¿Bien? Entonces esta es mi función, que es la función saludar. Lo siento, saludar a la persona, se llama , bien, no es una gran función. Entonces otra cosa por aquí que puedes notar es un programa de script de mandíbula única puede tener múltiples funciones definidas para diferentes propósitos, claro, ¿verdad? Entonces aquí estoy creando otro tipo de saludo, bien. Ahora, déjenme llamar a esto por aquí. ¿Bien? Si guardo esto, no verás ningún error. ¿Bien? Ahora, déjenme llamar a esta persona de saludo, y he llamado a esta función. ¿Bien? Ahora, en el momento en que llamas a esta función sin ningún argumento estás viendo que estás viendo hola indefinido. ¿Por qué estás viendo hola indefinido? Porque este nombre aún no está definido, no tiene ningún valor porque no has pasado el argumento, ¿de acuerdo? Ahora, habrá escenarios en los que desee establecer algún tipo de valores o parámetros predeterminados porque el collar o quien esté llamando a la función podría no pasar los valores siempre. Y en ese caso, es posible que desee tener un conjunto de valores por defecto con el que se inicialice el parámetro Ahora bien, una forma es tener un valor predeterminado por aquí, ¿de acuerdo? Pero esto no es bueno. Todo bien. Puedo tener un valor predeterminado como invitado por aquí. Bien. Y puedo guardar este hola invitado. Pero esta no es una buena manera de hacer las cosas. Si realmente paso un valor, ese valor será anulado Y si no quiero que eso se anule, necesito agregar cheques innecesarios por ¿Bien? Pero Ja script proporciona una manera sencilla de hacerlo. Todo bien. Lo que puedes hacer es al declarar el parámetro por aquí, en realidad puedes inicializar el parámetro con un valor predeterminado, así Bien, algo como esto. Si lo guardas, verás que hola invitado está impreso por aquí. Todo bien. Ahora bien, si no estás pasando ningún parámetro, estás viendo esta salida. Si pasa algún tipo de parámetro. Entonces si digo hola ron, bien, si guardo esto, verás hola Ron siendo impreso. ¿Bien? Entonces, si estás pasando algún tipo de parámetro, verás que ese parámetro es, lo siento, si estás pasando algún tipo de argumento, no parámetro, si estás pasando algún tipo de argumento, verás que ese argumento se está usando. Pero si no estás pasando ningún tipo de argumento, entonces se utilizará el valor predeterminado, siempre que hayas definido un valor predeterminado aquí, ¿de acuerdo? Entonces este es un ejemplo de función con parámetro predeterminado. Valor, ¿verdad? Entonces así es como esto es gente muy servicial. Habrá escenarios. Como, por ejemplo, esta es una persona de saludo, ¿verdad? Entonces, si no tienes el nombre del usuario por aquí, ¿de acuerdo? Podemos tener nombre inicializado a invitado por aquí, ¿verdad? Y entonces lo que puede pasar es que se está utilizando invitado. Si el nombre no está disponible, invitado si no quieres usar invitado, entonces necesitas pasar el nombre, nombre real del usuario. ¿Bien? Entonces independientemente, el usuario verá una salida decente. No va a ver hola indefinido. Derecha. Entonces va a ser una salida decente, ¿verdad? Ahora bien, esta es una función con valor de parámetro predeterminado. Todo bien. Quiero hablar de función con parámetro de descanso. ¿Bien? Así funcionan con parámetro de descanso. Todo bien. Ahora, ¿qué significa una función con parámetro de descanso? Todo bien. Entonces digamos que tengo una función llamada calcular suma. Bien, digamos. Y aquí, en el lugar de parámetro, tengo A P dos parámetros, derecho. Y lo que hace esta función es que dirá consola dot log. Sólo va a hacer A más B por aquí. Todo bien. Ahora la cosa es, quiero llamar a esta función, ¿no? Entonces lo que voy a hacer es calcular la suma. Voy a pasar en 1020. Bastante simple. Entonces se imprimirá 30 como la salida como se esperaba, ¿no? Ahora bien, el escenario es o la declaración del problema es esto va a funcionar bien o esto hará el trabajo si sabes cuántos argumentos vas a pasar, ¿verdad? Ahora bien, si no estás seguro del número de argumentos que vas a pasar a la función, entonces en ese caso, puedes hacer uso de número variable de argumentos, ¿verdad? Entonces necesitas cambiar la sintaxis de aquí para eso, y necesitas agregar tres puntos como este, y puedes decir números, ¿verdad? Ahora bien, lo que esto dice es que los números es el nombre del parámetro. Bien. Pero es de número variable, ¿verdad? El conteo no es fijo. Todo bien. Ahora la pregunta es, ¿cómo vas a usar esto dentro de la función si no se fija el conteo? Todo bien. Entonces para eso, tendremos que hacer uso de cuatro bucles. Bien, entonces voy a decir let sum es igual a cero. Y voy a decir cuatro. Entonces, si vienes de algún otro lenguaje de programación, bien, como Java, C plus, o cualquier tipo de lenguaje de programación, entonces es probable que debas estar al tanto de qué son los bucles, ¿verdad? Si no estás al tanto, entonces eso está completamente bien. Sólo quédate conmigo. Cubriremos todo a medida que avanzamos. Todo bien. Pero por ahora, estoy agregando este bucle de cuatro, y voy a decir suma más igual a, y voy a decir por aquí. Bien. Y luego al final, puedo hacer registro de consola por aquí. Bien. Y puedo decir algo bien. Algo como esto, ¿verdad? Ahora aquí, he pasado en 1020, lo que me está dando 30 como resultado. Bien, puedo pasar en 1020 y luego 30. Daré 60 como resultado. Puedo copiar esto de nuevo, y puedo pasar en diez, 20, 30, y puedo pasar en 80. Se puede ver que está dando 140 como resultado, derecho. Entonces esto va a seguir adelante, bien, porque el número de parámetros que acepta esta función es variable por esta sintaxis, ¿verdad? Para que puedas pasar cualquier número de argumentos como quieras. Dependiendo de tu requerimiento, ¿verdad? Entonces esto es algo de lo que debes estar al tanto. Esto se conoce como el parámetro rest. Puedes ver por aquí, este es el parámetro de descanso. Todo bien. Entonces sí, esto está hecho. Además, un ejemplo que deseo mostrarles es de un booleano, Entonces incluso puedes pasar parámetros booleanos, y cómo puedes usar los parámetros booleanos, ¿de acuerdo? Ahora, digamos, si quiero Comprobar si un miembro es elegible para un descuento o no, ¿verdad? Y un usuario es elegible para un descuento si es miembro. ¿Bien? Entonces puedo decir función por aquí, verificar elegibilidad por aquí. Bien. El parámetro es, digamos, uh, puedo decir que puedo decir que es miembro por aquí. Bien. Lo voy a mantener simple, y voy a decir consola punto log por aquí. Y dentro de esto, voy a tener una verificación ternaria de operador. ¿Bien? Entonces voy a decir, es miembro. Si este es miembro, entonces en ese caso, elegible si no imprime lo que va a imprimir? No elegible. Algo así. Bien. Y si. Bien, entonces cometí un error en la sintaxis. Sería algo así, y por aquí, sería Colin Bien. Entonces sí, esto está hecho. Bien. Entonces lo que estás haciendo es aquí, déjame tomar estas dos nuevas líneas para que sea mucho más legible, ves, lo que he hecho. En realidad estoy comprobando la elegibilidad para descuento con la ayuda de esta variable booleana Entonces, si es miembro, es elegible, de lo contrario, no lo es. Bien. Y de manera muy sencilla, se le puede llamar a esto. Es una elegibilidad de cheque, se puede decir, cierto. Bien. Para que veas que es elegible, y si cambias esto a falso, no es elegible. Todo bien. Entonces eso es lo que ves como la salida. Todo bien. Ahora bien, estas eran funciones basadas en variables. Todo bien. Incluso puedes tener funciones con objeto. ¿Bien? Así funciona con objetos como parámetro. Todo bien. Entonces en ese caso, voy a crear una función por aquí. Y digamos que deseamos imprimir la dirección. Bien, entonces la dirección puede ser complicada, ¿verdad? Y en ese caso, digamos que estamos, digamos que deseamos tener calle por aquí, voy a tener ciudad, y voy a tener SEP. Bien, estas cosas voy a tener. Bien. Y voy a decir consola dot log por aquí. Y con los backticks, voy a decir dirección. Bien. Y luego voy a imprimir en dirección. Lo siento, esta será calle, entonces esta será esta será después de la calle. Hay ciudad y ZIP. Bien, entonces voy a decir ciudad. Y entonces este será ZIP. Todo bien. Entonces tengo esta función, bien, es tener que es tener tres parámetros o es tener un solo objeto con estas tres propiedades por aquí. Bien. Ahora bien, ¿cómo le va a enfriar esto por aquí? Bien. Entonces para coll esto, puedo llamar simplemente a imprimir dirección, ¿ok? Y puedo haber dejado la dirección por aquí. Y puedo decir calle calle como calle uno, bien, algo así. Puedes tener cualquier tipo de dirección ficticio. Puedo tener una ciudad ciudad uno. Bien, estoy agregando todas las direcciones ficticias. Se puede decir ZIP y se puede decir por aquí, algo así. Bien. Entonces sí, esto es lo que es por aquí. Y voy a cerrar voy a tener punto y coma, y después pasaré en dirección a. ahora si ve la salida, puede ver dirección Calle uno, ciudad uno, y puede ver esto siendo impreso por aquí Así que en realidad estoy obteniendo la salida en múltiples líneas porque he agregado separación de líneas. Así que sólo voy a volver y voy a mover todo a una sola línea, y ya pueden ver la salida, ¿verdad? Entonces así es como puedes hacer pasar los objetos. Todo bien. Incluso puedes tener una dirección impresa por aquí. Esta es también otra sintaxis, y puedes crear directamente el objeto por aquí. Entonces se puede decir calle Colin ABC. Bien. De esta manera también puedes pasar. Derecha. Ya se ve que la calle se está pasando y los dos restantes no están definidos, ¿verdad? Por lo que es importante que la clave sea correcta para todos los pares de valores clave. Todo bien. Entonces aquí se puede decir ciudad dos, dos, salvo. Se puede ver la salida, sí. Bien. Así que puedes pasar o crear objetos dinámicamente así también por aquí. Todo bien. Y además, una cosa más que quiero destacar por aquí son las matrices, ¿de acuerdo? Por lo tanto, las funciones también se pueden usar con arrays como parámetros. Todo bien. Ahora, en este caso, lo que vamos a hacer es que tendremos función. Diré números de impresión y voy a tener números como parámetro por aquí, y puedo decir registro de puntos de consola, y puedo decir números, algo así. Todo bien. Y puedo llamar a esta función. Entonces déjenme llamar a esto. Diré imprimir números y déjenme llamar a esto. Puedo decir uno, dos, tres, cuatro, cinco, seis. ¿Todo bien? Si guardo esto, verás que la matriz se pasa a la función. Entonces este es también un ejemplo de función con array. Todo bien. Entonces esto es todo lo que tenía para hablar de diferentes parámetros. Quiero decir, los parámetros de la función y los argumentos de la función. Todo bien. Espero que este concepto sea claro. la distinción entre parámetros También se borra la distinción entre parámetros y argumento, y espero que tengas algo de claridad en cuanto a cómo puedes crear funciones que acepten diferentes argumentos, y puedas hacer uso de ella en JavaScript. ¿Bien? Entonces espero que esto haya sido útil. 4. Salidas de funciones al descubierto: explicación de los valores para la devolución: Ahora digamos que tengo una función que me puede ayudar a obtener un cuadrado de valor, ¿de acuerdo? Ahora bien, SQUA. Y para esto, aceptaré un número por aquí. Todo bien. ¿Y qué es un cuadrado? Un cuadrado se multiplica en número por sí mismo. Entonces voy a decir let result, y voy a decir número en número. Bien. Ahora esto está hecho. Puedo hacer un registro de consola por aquí. Bien, consola dot log, puedo decir resultado. Todo bien. Ahora voy a llamar a esta función. Diré que se ponga cuadrado, y llamaré a cuatro. Ahora, ¿qué es un cuadrado de cuatro? Es 16. Entonces verás 16 como la salida. Todo bien. Ahora lo que está pasando aquí es que estamos pasando en este argumento cuatro a este parámetro a esta función, y este parámetro se inicializa con cuatro, y luego ocurre el cálculo donde el resultado se inicializa con cuatro en cuatro, que es 16, y luego se obtiene 16 como resultado, ¿ Ahora bien, este 16 o el resultado no es accesible fuera de esta función, ¿verdad? Ahora, habrá escenarios en los que quizás quieras hacer cierto tipo de procesamiento, bien, cierto tipo de operaciones, donde estés procesando algunos datos, alguna información, y luego quieres obtener ese valor procesado. Por aquí, no vamos a recuperar el valor procesado de donde llamamos, ¿verdad? Entonces aquí estamos pidiendo a la función para obtener el cuadrado de cuatro. Pero, ¿y si quiero hacer uso de plaza por aquí? No puedo. No puedo acceder al resultado por aquí. ¿Bien? Entonces, si simplemente muevo esta declaración de aquí a aquí, no va a funcionar, ¿verdad? Se puede ver que el resultado no está definido. Y la razón es que el resultado se crea dentro de este bloque de función, entonces existe ahí mismo, ¿verdad? No se puede acceder a él fuera del bloque de funciones. Entonces, ¿cómo obtengo los datos del proceso? De la función. Ahora bien, aquí es donde se pueden devolver los valores, ¿verdad? Entonces aquí, lo que estoy haciendo es en lugar de imprimirlo por aquí, simplemente puedo decir retorno. Puedo hacer uso de esta palabra clave return por aquí. Se puede ver este retorno, y puedo decir resultado. ¿Bien? Ahora bien, lo que va a pasar como resultado de esto se devolvería el resultado. ¿Bien? Y de dónde se devuelve desde donde se llame a la función. Entonces desde donde sea, sea cual sea la posición que esté llamando a la función, ahí se devuelve este resultado Pero la cosa es que no lo estás viendo por aquí, ¿verdad? Entonces, para obtener el resultado, necesitas atraparlo, ¿ y cómo lo atraparás? Se puede decir cuadrado entumecido por aquí. Puedes crear una variable y puedes atraparla de esta manera, o y puedes imprimir esta variable. Entonces ahora verás 16 como salida. Entonces, lo que estamos haciendo esencialmente por aquí es que estamos creando una función g cuadrado para procesar o para obtener el cuadrado de un número y puede ser cualquier número, y estamos obteniendo el resultado por aquí, y lo estamos registrando por aquí. ¿Correcto? Ahora bien, esta cosa esta forma de hacer las cosas se conoce como devolver el valor de una función. Y aquí, estamos obteniendo ese valor y estamos haciendo algún procesamiento adicional, ¿verdad? Entonces sí, así es como puedes devolver y usar los valores de una función en particular. Ahora bien, la cosa de aquí es que estamos simplemente devolviendo un solo valor. Por supuesto, también puedes tener funciones que devuelvan múltiples valores. ¿Cómo harías eso? Entonces puedo tener función Bien, por aquí y puedo decir obtener información de usuario. ¿Bien? Y puedo decir nombre, coma H. Bien. Puedo decir regreso. Puedo decir nombre de usuario, nombre Colden por aquí Bien. Y puedo decir usuario H y puedo decir g por aquí. Bien. Entonces esto está hecho, y bien. Entonces esto está hecho, y voy a tener en vez de agregar esto, lo que puedo hacer es deshacerme de esto y puedo tener esto inicializarlo de esta manera Bien. Entonces estoy teniendo prueba de nombre, y voy a tener H como prueba. Bien. Ahora bien, ¿cómo consigo este valor en el lugar donde quiera que llame a esto? ¿Bien? Entonces lo que puedo hacer es que puedo ver el registro de puntos de consola. Bien. Puedo enseguida por aquí, digamos que puedo decir G. Lo siento, Oh, sí, empieza con G en realidad, información de usuario de G, y puedo llamarlo así. Y verás la información del usuario que se está imprimiendo por aquí, ¿verdad? En lugar de imprimirlo en la consola, lo que también puedes hacer es desempacar esto, ¿verdad Entonces aquí, entran dos propiedades, nombre de usuario y usuario H. Así que puedes desempaquetar esto y asignarlo a variables separadas ¿Cómo se hace esto? Entonces puedes decir que vamos por aquí. Se puede decir usar un nombre. Y se puede decir usuario g por aquí. ¿Bien? Es esto, bien, estás creando por aquí y estás llamando a obtener información de usuario. Todo bien. Y ahora si haces consola punto log por aquí, nombre de usuario, coma, usuario H. Puedes ver nombre es esto y H es este. ¿Bien? Ahora bien, lo que estamos haciendo es cuando estamos obteniendo el valor. Entonces, cuando el valor se devuelve de get user info, se devuelve en forma de objeto. Entonces esto es en realidad objeto por aquí, pares de valores clave, ¿verdad? Y así es como puedes devolver múltiples valores desde una función. Y estamos obteniendo un objeto como un tipo de retorno. Entonces lo que estamos haciendo es que podemos imprimirlo en la consola, Bien, no queremos imprimirlo. Queremos manejarlo de manera personalizada. Entonces lo que puedes hacer es desempaquetar estos valores y asignarlos a variables separadas usando la sintaxis ¿Bien? Entonces tienes la lista de variables por aquí y asegúrate de que coincidan con el nombre de aquí porque si digo nombre de usuario uno, y si lo guardo, verás que nombre de usuario no está bien, por aquí. Me va a encantar username one, y voy a guardar esto. Verás que el nombre de usuario uno no está definido ahora. ¿Por qué? Porque el nombre de la propiedad es nombre de usuario, y aquí la estás desempacando en una variable con nombre diferente ¿Bien? Entonces el nombre está siendo emparejado, ya ves, ¿verdad? Entonces esto debería funcionar. Y esta sintaxis donde estamos creando variables de esta manera a partir del objeto se conoce como destructuración ¿Bien? Y a menudo leerás este término desestructuración de objetos Estamos desestructurando los objetos. ¿Qué es la desestructuración? En términos simples, estamos desempacando los objetos, ¿de acuerdo? El objeto viene en esta sintaxis, ¿verdad? Tiene atributo username y usuario H. Lo estás desempacando y creando una variable llamada username, le estás asignando este valor, ¿verdad Este valor, sí. Y entonces estás creando usuario He y le estás asignando este valor Bastante simple. Lo estamos desempacando, y eso es lo que es desestructurar objetos Y aquí, realmente en la retrospectiva, no en la retrospectiva, en realidad, está bastante claro que esta sintta en particular o este concepto en particular se está utilizando por aquí Todo bien. Entonces así es como se puede hacer que la función devuelva múltiples valores, como objetos, por supuesto. ¿Bien? Ahora bien, así es como se puede devolver un objeto, derecho. Y también te mostré cómo puedes hacer uso del objeto desde el lugar donde estás llamando a esto. Ahora, otra forma de hacer las cosas o devolver múltiples valores es que puedes tener una función, return array, ¿verdad? Entonces también puedes hacer eso. Ahora bien, ¿cómo harías eso? Entonces déjame mostrarte eso. Así se puede ver la función y se puede decir obtener dimensión por aquí. Bien. No aceptaré un parámetro. Entonces digamos que estamos creando una función para obtener la dimensión. Diré que regresen, y inmediato podemos tener una matriz Puedo decir 200 300, 500. Bien. Y simplemente puedo llamar a Console dot log get dimension por aquí. Bien. Y puedes ver la salida por aquí. Bien, así que esto también es factible, ¿de acuerdo? Ahora, incluso puedes desestructurar la matriz de aquí en variables individuales ¿Bien? ¿Cómo lo harías? ¿Bien? Ya estamos conscientes, por cierto, de cómo funciona la desestructuración Entonces voy a decir, aquí estoy regresando 200300500, ¿verdad? Entonces puedo decir ancho Bien. Puedo decir altura, puedo decir profundidad por aquí. Bien. Voy a deshacerme de esto y voy a conseguir esto. Diré que es igual para obtener dimensiones. Bien. Y puedo decir Consola, punto, inicia sesión por aquí. Diré ancho, alto y profundidad, algo así. Bien. Uy. Entonces esto no está definido. Déjame ver dónde está el tema. Entonces la sintaxis es un poco diferente por aquí. En lugar de llaves, habrá corchetes redondos ¿Bien? Oh, perdón, no redondo, corchetes. Lo siento por eso. Bien. Entonces si guardas esto, puedes ver 200300500 Esto funcionó, ¿verdad? Entonces se trata de levantar por aquí. ¿Bien? Una cosa de la que quiero que hables es por aquí en el en esta función. ¿Bien? Déjame copiar esto por aquí. Bien. Voy a comentar esto. No voy a quitar este código para que veas qué cambios estamos haciendo. Así que este es el código, ¿de acuerdo? Aquí, lo que estoy haciendo es que en realidad estoy creando una variable. No necesitamos crear esta variable por aquí. Simplemente puedo cortar esto y simplemente devolver el cálculo, algo así. Esto también está bien. Hay otra forma de hacer las cosas. Se puede ver 16. La manera taquigráfica es lo que se llama, ¿verdad Entonces sí, así es como puedes devolver la función. Lo siento. Así es como puedes devolver valores y diferentes tipos de valores en realidad desde la función. Ahora también puedes tener Función sin retorno por aquí. ¿Bien? Entonces puedo tener la función llamada decir hola. Esto es algo que ya estás consciente o debes estar ya consciente, y puedes decir, quiero mostrarte cómo funcionan las cosas si intentas aceptar valor de una función que no está devolviendo nada. ¿Bien? Así que he saludado. Esto no es devolver nada. ¿Bien? Puedo saludar por aquí. Bien. Verás hola impreso. ¿Bien? Ahora bien, si digo consola punto, Inicia sesión por aquí y si digo mensaje Bien. Y si trato de aceptar mensaje como el retorno de esta función en particular. Esta función no está devolviendo nada, pero aun así estoy creando mensaje y tratando de aceptar lo que sea que esté regresando, te quedarás indefinido. No es devolver nada, ¿verdad? Entonces, claro, te pondrás indefinido, ¿verdad? Entonces sí, se trata de eso, ¿verdad? También puedes tener así que quiero mostrarte un caso más por aquí. Así que aquí voy a devolver el número al número, ¿de acuerdo? Ahora, déjeme agregar un testimonio después de esto, ¿de acuerdo? Voy a saludar. Veamos qué pasa. Si guardo esto, verás que esta declaración nunca se ejecuta. También verás que es una calificación fuera. ¿Puedes ver esto? Esto no es grado fuera, y esto es grado outut Si pasas el cursor sobre esto, verás el código inalcanzable detectado ¿Qué significa código inalcanzable? ¿Bien? Entonces lo que sucede es en realidad, si estás teniendo algún tipo de declaración después de la declaración return, repito si estás teniendo algún tipo de declaración después de la declaración return, entonces esa declaración nunca se ejecutará, ¿verdad? ¿Cómo se ejecutará? Porque en realidad estás regresando de aquí. Usted dijo que regresara. Regreso significa que estás viniendo al lugar desde donde te llaman la función, ¿verdad? Vienes al lugar desde donde llamas a la función. Entonces esto nunca va a ser ejecutado. Entonces este es, por supuesto, un código inalcanzable, ¿verdad? Esto nunca será ejecutado, ¿verdad? Ahora, déjame hacer las cosas un poco interesantes, ¿verdad? Para que puedas tener función. Con múltiples valores de retorno o declaraciones de retorno. No valores. Debería decir declaraciones return porque los valores ya hemos visto cómo se pueden devolver múltiples valores en forma de objetos y arrays, ¿verdad? Entonces digamos que tengo una función en la que quiero verificar cada uno de los usuarios. Estoy comprobando la edad y estoy aceptando la edad por aquí. Bien. Ahora puedo decir edad si la edad es mayor de 18, ¿ok? Entonces estoy haciendo uso de operador ternario. Estoy diciendo bien, regresa adulto. Algo así. Entonces es adulto que regresa si la edad en realidad es superior a 18, ¿de acuerdo? Y oops esto no nos está permitiendo regresar por aquí, operador ternario. Voy a tener que hacer uso del tratamiento I por aquí. Bien, entonces voy a decir que la edad es mayor que 18, entonces en ese caso, ¿de acuerdo? Voy a querer regresar adulto, ¿ verdad? Estoy regresando adulto. ¿Bien? De lo contrario, lo que voy a devolver es menor. Digamos. Bien. Entonces sí, esto está hecho, y voy a tener punto y coma Bien. Entonces aquí lo que está pasando es observar esto cuidadosamente, gente, ¿de acuerdo? Estoy teniendo una función donde estoy teniendo dos declaraciones de devolución, regreso adulto, regreso menor, ¿de acuerdo? Entonces esto es absolutamente válido, bien, porque estas dos declaraciones return no se ejecutan a la vez. Cualquiera de estos se ejecutará dependiendo de la condición, ¿verdad? Entonces, si la condición es verdadera, ésta será ejecutada. Si la condición es falsa, ésta será ejecutada, ¿verdad? Y así es como funciona la declaración if. Entonces primero estamos comprobando esta condición, y luego estamos ejecutando esto, ¿verdad? Por lo que puede tener múltiples declaraciones de devolución. Esto está absolutamente bien por aquí. Todo bien. Y si trato de atropellar esto por aquí, puedo decir consola dot log por aquí. Bien, y puedo decir cheque, edad, déjame pasar 14 por aquí. Bien, voy a copiar esto y voy a guardar esto. Verás menor como la salida. Si vuelvo a ejecutar esto con los 24 años, verás adulto. Todo bien. Entonces aquí estamos haciendo uso de return con declaraciones if, y esto es absolutamente válido. No hay ningún tema como tal, ¿de acuerdo? Entonces espero que esto tenga sentido ahora en cuanto a cómo la función puede devolver valores en múltiples y diferentes escenarios. Todo bien. Entonces espero que esto sea útil. 5. Elabora código: explora expresiones funcionales en JavaScript: Entonces ahora es el momento de que hablemos de expresiones de función. Digamos que tengo una función muy sencilla, que se utiliza para saludar, ¿verdad? Y puedo llamarlo así. Nada mágico por aquí. Veremos la salida como hola. ¿Bien? Ahora, otra cosa que quiero destacar por aquí está en la parte superior, si agregas una llamada a función como esta, verás la salida incluso antes de que se declare la función. Entonces incluso antes de la declaración de la función, si intentas agregar say hello o llamar la función que vas a declarar, seguirá funcionando. No obtendrás ningún error. ¿Todo bien? Ahora llegando al tema de las expresiones de función, ¿qué son las expresiones de función? Entonces puedes tener una variable creada, así. Se puede decir vamos a crear por aquí. Y se le puede asignar una función, ¿verdad? Entonces eso es algo que puedes hacer. Todo bien. Entonces lo que voy a hacer es cortar esto. No voy a crear una nueva función. En cambio, voy a cortar esto y voy a añadir esa cosa por aquí, ¿de acuerdo? Y a, esto es absolutamente válido por aquí. ¿Bien? Esto es algo que puedes hacer en JavaScript. ¿Bien? Puedes llamar a Greet algo como esto, y puedes ver, Bien, C hola. Bien. Entonces esto tiene que desaparecer por aquí. El nombre C hola necesita irse, ¿no? Y una vez que va S hola, necesitas que te guste comentarlo. Bien. Y puedes ver, ahora puedes llamar a esta función en particular usando greet. ¿Bien? Entonces, lo que estamos haciendo aquí es que en realidad estamos teniendo una especie de variable que ahora está apuntando a esta definición de función. Y cuando te refieres a esta variable, puedes llamar a la función usando esta variable en sí misma. ¿Bien? Entonces este es un ejemplo de una expresión de función. Ahora como funciona todo esto es, lo que sucede es que primero se crea la función anónima. ¿Bien? Función anónima, es decir, se está creando una función sin nombre, porque no estamos agregando un nombre por aquí, ¿de acuerdo? Entonces se crea la función sin nombre, y se le asigna a esta variable llamada Grit, ¿bien? Y entonces puedes hacer uso de la codicia para llamar a la función. Ahora bien, si copio esta función llame, y si la agrego en la parte superior verás que la arenilla aún no está inicializada o la arenilla no Todo bien. Entonces, a diferencia de decir hola, donde pudimos llamar a la función con su nombre de función, no podemos llamar a function con greet porque grit es esencialmente una referencia que hemos creado que está apuntando a esta función ¿Bien? Entonces esto es algo que debes tener en cuenta, ¿de acuerdo? No se puede llamar a grit antes de su definición en el código. Debes definirlo antes de usarlo. ¿Todo bien? Entonces sí, se trata de la expresión de la función. Ahora bien, esta cosa de aquí, lo que estamos haciendo cuando estamos asignando la función de esta manera, en realidad estamos creando una expresión ¿Bien? Entonces este es un ejemplo de expresión de función. Incluso se puede agregar una función, derecha, que devuelve algo. ¿Bien? Entonces déjenme decir también vamos a multiplicar. Bien. Digamos que queremos tener una función para multiplicar algo. Voy a añadir función por aquí. El parámetro es E P por aquí, y voy a decir que devuelve A en B, porque esta función está multiplicando los dos números y regresando. ¿Bien? Ahora se puede decir multiplicar por aquí, diez, 20. Bien. Y si guardo esto. Bien, entonces es simplemente regresar. Necesitamos imprimir el valor si queremos usarlo, o mostrarlo a los usuarios. Todavía no dando la salida debido a esta línea en la parte superior, ahí estamos obteniendo un error. Entonces, si guardas esto después de comentar eso, así obtendrás multiplicador por aquí, puedes ver, y puedes ver el resultado de la multiplicación por ¿Bien? Entonces esto también es factible en donde estás teniendo una función que está devolviendo algo y estás asignando esa función a una variable Entonces esta es una función anónima o función sin nombre que estás asignando a una variable Todo bien. Ahora, una cosa más que quiero destacar por aquí es que las funciones en JavaScript son objetos. ¿Bien? Entonces son objetos, lo que significa, si tienes una función, Bien, entonces déjame crear una función por aquí. ¿Bien? Entonces aquí, voy a decir que las funciones son objs Todo bien. Y voy a tener una definición de función. Voy a llamar a esto como GET. Bien. Sin parámetros. Diré registro de puntos de consola, y rápidamente voy a saludar por aquí. ¿Bien? Entonces sí, esta es una función. Ahora lo que puedes hacer es que tengamos esta función. ¿Bien? Bien, GET ya ha sido definido, así que di hola, o di hola. Todo bien. Entonces si llamas a saludar, va a funcionar, claro, nada mágico, ¿ verdad? Ahora, hola otra vez. Voy a imprimir algo. Hola otra vez, camino. Para que sepamos que viene de esta función. Hola otra vez viene de esta función. Todo bien. Lo que puedes hacer es tener una variable. Puedes decir A por aquí, y puedes asignar decir hola por aquí. ¿Bien? Entonces lo que está pasando aquí es esta función o esta variable, debería decir. Todo bien. Esta variable también se refiere ahora a esta función, ¿verdad? Y simplemente puedes decir, A, y volverás a ver hola . Todo bien. Entonces puedes ver que estás asignando una función esencialmente a una variable Y esto es posible porque las funciones son objetos en JavaScript. Bien. Y puedes hacer uso de A para llamar a esta función en particular. Todo bien. Espero que esto tenga sentido, ¿verdad? Entonces estos son algunos conceptos que deseo tocar. Espero que esto haya sido útil. 6. Fundamentos modernos de JavaScript: dominio de las funciones de flecha: Entonces ahora es el momento de que hablemos de funciones de flecha. Ahora, ¿qué son las funciones de flecha? Ahora, las funciones de flecha son sintaxis, y la sintaxis proporciona una forma más concisa de crear y escribir funciones en JavaScript. ¿Todo bien? Ahora bien, si tienes que crear una función, qué harías dirías función, saludar, y yo solo diría hola por aquí. ¿Bien? Entonces yo diría Consola, registro, y yo diría hola. ¿Bien? Esta es una función. Y, claro, si tengo que llamarlo, simplemente lo llamaré así, di hola. Esta es una forma básica de crear funciones en JavaScript. Ahora, puedes hacer uso de la expresión de función, ¿verdad? Y se puede decir, et greet es igual a, y puedes deshacerte de este tipo de sintaxis por aquí. ¿Bien? O permítanme mantener esta sintaxis por aquí en la parte superior. Bien, para que veamos cómo estamos progresando y me voy a deshacer de esto por aquí Todo bien. Y esta es también otra forma de crear función. Pero aquí estamos haciendo uso de la expresión de función donde estamos asignando una función a una variable. ¿Bien? Entonces ahora esta variable está apuntando a esta función en particular. Ahora, en JavaScript, puedes mejorar o hacer esto aún más conciso. Todo bien. Entonces lo que puedes hacer es que puedes decir por aquí, cret voy a decir saludo flecha Veremos qué es la función de flecha. Por lo tanto, puede omitir esta palabra clave de función aquí antes que nada. Muy bien para que puedas deshacerte de esta palabra clave de función. Y como nuestra función es simplemente tener una sola declaración, simplemente puedo deshacerme de las frases y simplemente puedo decir, o simplemente puedo hacer algo como esto. Todo bien. Entonces estoy haciendo uso de flecha por aquí para definir el cuerpo de la función o la definición de función. Ahora puedo decir saludo flecha por aquí. Y puedo guardar esto y verás hola siendo impreso en la consola. Todo bien. Entonces esta sintaxis de aquí es una sintaxis de la función arrow. Y se puede ver que esta es una creación de funciones de una manera normal, bien, con solo la sintaxis normal. Esta es una expresión de función donde se está asignando una función a una variable Y aquí, ahora lo que estás haciendo es que estás haciendo esta sintaxis o expresión de función aún más concisa y estás haciendo uso de la flecha por aquí. Entonces esto es funciones de flecha, derecha, en donde puedes crear funciones de esta manera. Ahora, claro, esto es mucho más conciso, si solo estás creando una función hacer una línea de operación, por ejemplo, cualquier línea de operación como imprimir algo o registrar algo o procesar algo en una sola línea, entonces de esta manera, entonces de esta manera, la función flecha es mucho más concisa que hacer las cosas de esta manera o de esta manera, ¿ verdad? Es sólo una opción. Todo bien. Y verás mucho código por ahí que está haciendo uso de funciones de flecha. ¿Todo bien? Ahora bien, la pregunta está aquí, esta función es una línea, ¿verdad? Entonces, ¿es como la función de flecha solo se usa para una sola línea de declaración? Absolutamente no. Entonces, si el cuerpo de la función tiene múltiples declaraciones. Entonces aquí puedo decir crear flecha, múltiple, ¿de acuerdo? Y puedo decir por aquí, ¿de acuerdo? Entonces aquí, voy a añadir cuerpo, algo así, y puedo decir, por aquí, voy a copiar esto y voy a armar este hola. H dos. ¿Bien? Entonces este es hola uno, y así es como dos. Todo bien. Y solo necesito llamar a esto poder decir crear flecha múltiple y uh simplemente agregar para que puedas ver hola uno, hola dos. Así que también puedes tener múltiples líneas de código en las funciones de flecha. Todo bien. Ahora, vamos a crear y ver rápidamente diferentes funciones de flecha en diferentes escenarios, derecha. Entonces, ¿cómo se comportaría la función arrow si hay parámetros, verdad? Entonces vimos así es como se puede crear sin parámetros, ¿verdad? Entonces con los parámetros, simplemente agregarás un parámetro por aquí, Bien. Entonces, por ejemplo, por aquí mismo, puedo actualizar este ejemplo por aquí. Bien. Déjame duplicar esto por aquí. Bien. Ahora, aquí, puedo decir param uno Bien. Entonces es tener un parámetro, así puedo decir nombre por aquí, bien. Y simplemente voy a convertir esto a literal de plantilla. Bien, porque eso es más conveniente, y puedo decir más alto y nombrar por aquí, ¿verdad? Y ahora tengo que pasar de nombre aquí. Bien. Entonces voy a decir Creta flecha, y voy a decir param uno Bien. Y puedo decir John. Bien. Y si guardo esto, ya verás, hola, uno, John, ¿verdad? Entonces así es como puedes pasar en los parámetros, bien. Incluso puedes pasar múltiples parámetros si así lo deseas. Entonces puedo decir param dos. Entonces aquí estamos pasando en dos parámetros, así puedo decir H también por aquí, Bien Y aquí, simplemente puedo replicar esta sintaxis, ¿de acuerdo? Aquí. Voy a hacer uso de los literales de plantilla, y aquí, voy a decir H. Bien. Y aquí, sólo voy a copiar esto. Entonces vamos a decir param dos, y me estoy pasando John, así como 34 o 32 Voy a guardar esto y puedes ver hola uno, John, hola dos, 32, ¿verdad? Entonces estás pasando múltiples parámetros, y también estás teniendo un cuerpo de función, ¿verdad? También puedes conseguir este. ¿Bien? Entonces déjame entender esto con una sola declaración por aquí. Bien, consigue flecha, diré una, voy a pasar de nombre por aquí. Bien. Y puedo agregar nombre aquí. Algo así. ¿Bien? Ahora bien, si llamo a esta función, obtener R uno o saludar a R uno, bien. Tan genial R uno y puedo pasar en nada, ¿de acuerdo? Y si guardas esto, puedes ver hola Nadar, ¿verdad? Entonces aquí, esta es una función de una sola línea, en realidad. No está pasando como múltiples líneas. Esta función es solo tener una sola línea, e incluso puedes pasar un parámetro por aquí, ¿verdad? Para que puedas tener parámetros únicos, múltiples parámetros. Incluso puedes devolver valores, ¿verdad? Entonces déjame escribir en el ejemplo de aquí. ¿Bien? Entonces lo que puedo hacer es decir, digamos suma, y yo diría que es igual a, bien. Así que permítanme crear primero usando sintaxis normal, para que la deducimos luego a las funciones de flecha. Bien. Entonces aquí puedo decir s y Ups, puedo decir s, y aquí puedo decir E P, y esto simplemente regresa, E más P. Bien. Eso es. Bastante simple. Y ahora aquí puedo decir suma, ¿verdad? Puedo decir 1020, ¿verdad? Y voy a poner todo esto en el registro de la consola. ¿Bien? Entonces porque simplemente estamos regresando y no estamos imprimiendo nada, ¿verdad? Por lo que no se mostrará en la consola. Para que veas que estamos viendo 30 por aquí, ¿no? Ahora bien, si tengo que convertir esto en una expresión de función, puedo decir let y puedo decir algunos por aquí. ¿Bien? Yo mantendré el mismo nombre. Vamos a deshacernos de esto. Bien. Ahora bien, esta es una expresión de función. Se puede ver 30. Ahora bien, si tengo que convertir esto en función de flecha, ¿cómo lo haría? Así que aquí, puedo puedo deshacerme de la función antes que nada, Bien. Y entonces empezaré a ver marcas rojas por aquí, ¿verdad? Así se puede ver flecha esperada. Entonces aquí puedo ver flecha. Bien, y esto es todo. Se puede ver que esta es la función de flecha. Y ni siquiera necesito esto por aquí. Bien, porque es solo tener una sola línea de código, para que puedas ver cómo es esto. Y ni siquiera necesitas la palabra clave return, por cierto, si estás regresando y es solo tener una sola línea de código, puedes ver, es. Ya sabes, esto es todo. Yo solo agregaré espacio. Ya sabes, esto es todo. Entonces, ¿qué tan limpio es esto? Estás diciendo que vamos a resumir. Este es un parámetro, flecha, estás diciendo A más B. No hay palabra clave return, por lo que esta se devuelve automáticamente. Se entiende que se devolverá o este valor tiene que volver atrás, ¿verdad? Entonces, ¿qué tan conciso es esto en comparación con hacer las cosas a la antigua, verdad? Es bastante simple, bastante fácil, y hace que la sintaxis sea mucho más legible y concisa como puedes imaginar por aquí, ¿de acuerdo? Entonces devolver valores es lo que voy a escribir aquí. Entonces espero que hayas podido seguir adelante, y espero que la explicación de las funciones de flecha haya sido útil. 7. Cómo potenciar los objetos: aprovechar las funciones dentro de ellos: Entonces hablemos de cómo puedes hacer uso de funciones dentro de los objetos. Ahora, digamos que tengo este objeto por aquí llamado persona, ¿de acuerdo? Y voy a tener un par de propiedades por aquí. Bien. Entonces voy a decir Alice por aquí. Bien. Y puedo decir que vaya, g es 33. Bien, me perdí una coma. Bien, puedo decir consola dot log por aquí. Vaya, y puedo decir así que esta es la persona pensó H. Bien. Ahora, puedo agregar pactics por aquí Puedo convertir esto en literal de plantilla, y puedo decir, Hola, estoy. Bien. Y de hecho puedo agregar una expresión por aquí. Bien. Ahora, este será el nombre. Bien, porque el nombre es lo que tiene sentido. Y si guardo esto, ya verás, hola, soy Alice. Todo bien. Entonces, lo que estamos haciendo es que nos estamos refiriendo a las propiedades dentro de los objetos usando notación de puntos por aquí, ¿verdad? Ahora, puedes tener funciones dentro de los objetos. Ahora bien, si estás agregando funciones dentro de objetos, se les conoce como métodos, ¿verdad? Entonces aquí, simplemente puedo seguir agregando declaraciones por aquí, puedo decir mi edad por aquí, puedo imprimir en mi edad persona punto H por aquí. ¿Bien? Pero esto está fuera del objeto. Entonces puedo agregar esta cosa dentro del objeto con la ayuda de function, como dije, así que voy a cortar esto por aquí. ¿Bien? Y primero voy a añadir una coma porque los métodos que estás agregando, como dije, función dentro un objeto se conoce como método, ¿verdad Entonces, si ahora estás agregando un método por aquí, bien, esto debería estar separado por comas porque es un atributo, derecho o una propiedad, debería decir Entonces voy a decir Grit por aquí. Diré que funciona así, y lo voy a añadir por aquí. ¿Bien? Si guardo esto, no pasa nada porque necesito enfriarlo. Entonces voy a decir Oh, no voy a ser saludado. Diré persona punto Saludar lejos. ¿Bien? No necesito llamar a console dot log por aquí porque ya estoy haciendo el registro de puntos de consola dentro de este método de aquí, ¿verdad? Entonces voy a decir persona punto Greg, y voy a ver esto verás hola soy Alice, ¿verdad? Voy a deshacerme de esto de una manera. ¿Bien? Entonces esto es factible Ahora voy a llamar a este objeto como persona Alice. Voy a reemplazar a la persona Alice por aquí así como por aquí. Esto está funcionando bien. Ahora voy a añadir una persona más por aquí, o que es la réplica de este objeto de aquí, y voy a decir persona John por aquí. Bien. Voy a copiar su nombre, persona, John, persona, John, y voy a duplicar esto por aquí, y voy a decir persona John. ¿Puedes ver? Hola, soy Alice. Hola, soy John. Bien. Entonces esto está funcionando bien hasta ahora hasta ahora bien. Bien. Ahora bien, la forma en que hemos creado funciones aquí es con la ayuda de la expresión de funciones, ¿verdad? que pueda deshacerse de la función de aquí, la palabra clave function, y puede convertir esto en función de flecha. ¿Bien? Entonces, lo que puedo hacer aquí es que simplemente puedo deshacerme de esto y puedo agregar este tipo de sintaxis por aquí. Bien. Puedo deshacerme de esto y puedo hacer uso de este tipo de sintaxis por aquí. ¡Uy! Este tipo de sintaxis, ¿verdad? Entonces esto va a funcionar bien. Y si se guarda esto, va a funcionar bien. No hay cambios en la salida. Entonces se han creado estos métodos. Todo bien. Ahora puedo deshacerme de la prensa de rizos también, y puedo hacer que se vea aún más concisa porque estoy haciendo uso de funciones de flecha ahora, ¿verdad? Entonces voy a pasar a esta sintaxis. Bien. Y al final, voy a quitar el punto y coma. Bien. Si guardo esto, no hay cambio en la salida. ¿Todo bien? Ahora, también quiero hablar de una palabra clave que existe, que es esta palabra clave. Ahora aquí, estoy viendo personalis cual es este nombre de objeto en particular, ¿verdad? Pero en realidad lo que estoy haciendo es que en realidad refiero al atributo name o name property usando este nombre de objeto. Esto no es obligatorio. Lo que puedo hacer es simplemente hacer uso de esto de aquí. Esta es una palabra clave en JavaScript que se utiliza para hacer referencia al objeto actual, ¿verdad? Entonces, si pasas el cursor sobre esto, bien, verás este tipo de palabra clave de prueba global Si guardo esto, ¿de acuerdo? Bien, no funciona porque ambas se convierten en funciones de flecha. Todo bien. Entonces, una cosa que debes recordar es que si estás haciendo uso de esta palabra clave, no funcionará en las funciones de flecha, así que necesitas decir función por aquí, y necesitas guardarla. Bien, y necesito deshacerme de esto. Así que voy a tener que hacer un poco de inversión porque esta palabra clave no va a funcionar dentro de esta sintaxis en particular de aquí. Bien. Entonces volveré a cambiar a este tipo de sintaxis. Bien. Para que veas, hola soy Alice trabajando por aquí. Entonces ahora estás haciendo uso de esto. Si pasas el cursor sobre esto, verás que esto se refiere al nombre, g, y saluda Si cambias esto por aquí, claro, no funcionará porque acabas de verlo no funcionará dentro de las funciones de flecha. Y si pasas el cursor sobre esto, estás viendo como si se estuviera refiriendo a esto global ¿Bien? Pero éste se refiere a esto por aquí, o los otros atributos en el objeto. Todo bien. Para que puedas ver la salida. La salida no es adecuada. ¿Bien? Entonces me quedaré con la persona John por aquí. Entonces, una cosa que puedes llevarte aquí es si estás haciendo uso de esto o si tu método dentro del objeto implica hacer uso de esto, entonces no deberías hacer uso de la función de flecha dentro del objeto de aquí, ¿verdad? No se debe utilizar la sintaxis. Deberías hacer uso de este tipo de sintaxis. Todo bien. Entonces espero que esto sea útil. Ahora, se puede hacer mucho con los métodos dentro de los objetos, ¿de acuerdo? Entonces, si vienes por aquí, lo que voy a hacer es que voy a tener un contraejemplo por aquí. Bien. Ahora, ¿qué va a hacer el contador? va a enseñar cómo puedes pasar en los parámetros y cómo puedes devolverlo del objeto, ¿verdad? Entonces voy a decir const, o simplemente puedo decir let over here, counter Bien. Y voy a decir valor. Entonces este contador tiene valor inicial de cero. Bien. Y puedo decir incremento por aquí Entonces esta es una función que estoy creando función de incremento, y voy a decir valor de retorno Ahora se necesita incrementar el valor. Entonces puedes ver que este valor de punto se agregó y puedes incrementar el valor aquí Entonces puedo decir este valor de punto más igual, y puedo decir uno por aquí. ¿Bien? Y guardar esto hasta el momento tan bueno. Ahora bien, si me desplazo hacia abajo, necesito invocar esto por aquí para poder decir Consola, punto de registro por aquí, y necesito decir contador, punto, necesito decir incremento Se puede ver incrementado en uno, puedo copiar esto. Bien, puedo incrementarlo en dos, incrementado en tres, incrementado en cuatro, y así sucesivamente, Ahora bien, este es un ejemplo de cómo se pueden devolver valores a partir de un método que se define dentro del objeto debería decir, ¿verdad? Te voy a mostrar un ejemplo más donde puedes aceptar el parámetro y regresar también. Digamos que quiero incrementar el valor en cierta cantidad Entonces duplicaré esto. Voy a añadir una coma Aquí, puedo decir incremento B y voy a aceptar un valor como num por aquí, y voy a añadir ese valor num por aquí ¿Bien? Y voy a devolver el valor. Ahora, aquí, lo que debo hacer es aquí, si vengo, puedo decir incremento Pi, y puedo agregar diez por aquí Entonces idealmente la salida debería ser 14. Si guardo esto, se puede ver que la salida es 14. Entonces estás pasando en este parámetro y estás obteniendo esto como salida. Todo bien. Entonces así es como puedes pasar los parámetros y también puedes obtener los valores de retorno de los métodos, como las funciones dentro de los objetos se conocen como métodos. Entonces me refiero a ellos como métodos. Bien. Pero si estás creando métodos dentro del contador, así es como funcionarán. Todo bien. Ahora bien, un ejemplo más que quiero darles por aquí es de objetos dinámicos por aquí. Lo siento, no objetos dinámicos, pero yo llamaría a esto como una forma en la que se pueden definir métodos dinámicamente. ¿Bien? Así definiendo métodos dinámicamente. Todo bien. Entonces digamos que tengo un método. Bien, voy a llamar a este método dinámico. Bien. Es un ejemplo de cómo se pueden crear métodos dinámicos. Entonces tengo esto, y digamos que tiene un atributo, voy a agregar un atributo, así como así. Yo lo llamaré valor cero. Bien. Lo que puedes hacer es que puedes hacer Console Log y puedes ver el valor de punto del método dinámico. Ocho. Entonces esto te dará cero, claro. Ahora, no he añadido un método dentro. Puede agregar método dinámicamente después de que se haya creado el objeto. Eso se puede hacer. Sí. ¿Cómo harías eso? Entonces aquí, puedes venir. Se puede decir método dinámico, tot Bien. Déjame desplazarme hacia arriba para que sea visible. Entonces método dinámico, tot, puedo decir, digamos digamos alto por aquí y puedo decir función Bien. Y no necesito ningún tipo de parámetros. Voy a decir consola punto log por aquí, y voy a decir hola dinámico, ¿verdad? Y vaya, voy a bajar y voy a decir método dinámico punto. Diré Chi, algo así. Verás la salida hola dinámica por aquí. Entonces esta función o el método, debería decir, método se agregó al objeto dinámicamente después de que se creó el objeto. Entonces esto es absolutamente posible. Los métodos se pueden agregar a los objetos en cualquier momento del programa, no solo en el momento de la creación del objeto. Ten esto en mente, bien, posible que veas un código donde las cosas son así, así que no te confundas. Bien, esto es normal en JavaScript. Todo bien. Ahora bien, se trata de objetos normales. También quiero hablar un poco sobre los objetos anidados, bien entonces, ¿cómo funcionarían las funciones en los objetos anidados, verdad Para eso, tomaremos un ejemplo de auto. Bien. Así que voy a crear un objeto de coche rápidamente. Y digamos que el auto tiene un atributo llamado marca. Tiene marca como Toyota, ¿bien? Y entonces lo que voy a hacer es decir que tiene un objeto anidado por aquí llamado especificaciones Llamaré al atributo dentro de las especificaciones para que sea velocidad. Y voy a tener una función llamada especificaciones de pantalla. Y entonces este es un método, en realidad, no función. Lo siento. Bien. Entonces las terminologías, no se metan con las terminologías Tengo la costumbre de hacerlo, pero espero que lo llamen método, siempre, porque se llaman métodos dentro de los objetos, ¿verdad? Entonces puedes decir que la velocidad es o simplemente puedes mostrar la velocidad por aquí. Entonces puedo decir velocidad y voy a agregar puedes decir esta velocidad tot. Bien. Ahora esto está hecho. Ahora bien, ¿cómo llamarías a esto especificaciones desplazadas, verdad? Entonces es un objeto dentro del objeto, ¿verdad? Así que no necesito hacer registro de consola. Yo sólo me desharé de esto. Pero puedo decir cartt especificaciones, tot, especificaciones desplazadas . Se puede ver. Entonces verás que la velocidad es de 120. Entonces así es como puedes referirte a métodos que se crean dentro de objetos anidados, objetos dentro de objetos Entonces así es como puedes hacer las cosas. Todo bien. Entonces espero que esto sea útil y espero que hayas podido seguir adelante en cuanto a cómo funcionan las cosas con los métodos dentro de los objetos anidados Todo bien. También hay una versión taquigráfica Bien. Ahora, déjeme mostrarle eso. ¿A la derecha? Entonces lo que haría es hacer uso del objeto existente por aquí. Bien. Voy a hacer uso del objeto existente. Bien. Así que la versión taquigráfica por aquí Entonces esto es voy a decir taquigrafía de persona. Bien. Voy a llamar a esta persona como taquigrafía. Todo bien. Y ahora aquí, lo que podemos hacer es en lugar de tener este tipo de sintaxis por aquí, simplemente puedo tener una función así. Bien. Entonces no estoy haciendo uso de las funciones de flecha aquí. Ten esto en cuenta, bien. Pero voy a añadir un punto y coma y esto. Bien. Y si, esto es todo. Y puedes hacer uso de la taquigrafía de persona por aquí. Todo bien. Y esto debería funcionar absolutamente bien. Se puede ver. Bien, diciendo hola, soy John porque esto se refiere a la persona John. Se puede ver esto por aquí. Bien. Para que veas, hola, soy taquigrafía. Todo bien. Y esta es una versión taquigráfica, posible que también veas este tipo de sintaxis cuando se trabaja con objetos ¿Bien? Entonces los métodos crearon de esta manera. Todo bien. Entonces esta es una manera, bien. Otra forma es usar funciones de flecha, y luego también tienes expresión de función como este tipo de sintaxis, ¿verdad? Entonces todos estos son válidos, y funcionarían absolutamente bien. Todo bien. Entonces espero que sea claro para todos ustedes, y espero que esto haya sido útil. 8. Matrices de supercarga: métodos avanzados en JavaScript: Ahora, cuando estás trabajando con matrices, hay muchos métodos incorporados que Ja Script proporciona Y puedes hacer uso de estos métodos para trabajar de una mejor manera o para hacer muchas tareas al trabajar con matrices. Todo bien. Ahora, echaremos un vistazo a bastantes métodos que existen, y obtendrás una mejor comprensión de cuáles son estos métodos y cómo puedes hacer uso de ellos en tu programación diaria. Entonces aquí puedes ver esta lista, derecha. Uh, entonces ahí está este mapa, filtrar, reducir forraje. Pasaremos por cada una de ellas, ¿verdad, y te explicaré todo uno por uno, verdad? Entonces primero, hablaremos de mapa por aquí. Bien. Yo sólo voy a bajar esto, y voy a llevar esto a la nueva línea. Por aquí y sólo voy a acercar un poco. Todo bien. Ahora, ¿qué es el mapa? Ahora, el método map transforma cada elemento en una matriz y simplemente devolverá una nueva matriz. ¿Cómo funciona esto? Ahora, esta transformación puede ser cualquiera de operación o cualquier transformación que desee hacer en cada elemento de la matriz y desea recopilar todos los elementos transformados nuevamente en una matriz. Ahora déjame darte un ejemplo de cómo puedes hacer uso del mapa. Ahora digamos que tengo una matriz llamada números. Todo bien. Digamos que es una matriz simple, está teniendo elementos como uno, dos, tres, cuatro y cinco por aquí. Todo bien. Ahora, digamos que tengo un requisito en el que quiero hacer el doble de cada elemento en esta matriz. ¿Bien? Entonces están estos muchos elementos y quiero duplicar cada elemento que existe. Así que dos se convierten en cuatro, uno se queda uno o uno se convierte en dos, en realidad, ¿de acuerdo? Se convierte en cuatro, tres se convierte en seis, cuatro se convierte en ocho y cinco se convierte en diez. Todo bien. Entonces lo que puedo hacer es tener una función por aquí, ¿de acuerdo? Así que puedo tener una función llamada double por aquí. Bien. Y el parámetro puede ser num por aquí. Bien. Y puedo decir devolver num en dos. Ahora bien, esta es una función que me va a ayudar a duplicar cada elemento. Ahora bien, ¿cómo voy a aplicar esta función a cada elemento de la matriz? ¿Bien? Entonces para eso, lo que voy a hacer es voy a decir números, que es array por aquí. Voy a decir punto. En el momento en que digas punto, verás que estos son todos los métodos a los que tienes acceso, ¿verdad? Y tienes un método por aquí, que es el mapa. Entonces diremos mapa por aquí. ¿Bien? Si pasa el cursor sobre esto, verá que llama a la función de devolución de llamada definida en cada elemento de una matriz y devuelve una matriz que contiene el resultado ¿Bien? Así que voy a decir mapa, y voy a pasar la función por aquí, ¿de acuerdo? Simplemente voy a decir Bien. ¿Verdad? Ahora lo que esto va a hacer es que va a aplicar esta función a cada elemento de la matriz. ¿Todo bien? Ahora, el retorno por aquí es una matriz otra vez. Entonces, lo que necesito hacer es recopilar los elementos duplicados de nuevo en una matriz. Entonces necesito decir números duplicados o dobles, algo así. ¿Bien? Y entonces puedo decir consola punto Iniciar sesión por aquí. Bien. Vaya, así que necesito decir registro de puntos de consola, y necesito decir doble Números, algo así. Todo bien. Y deberían dar el resultado. Ahora, se puede ver por aquí, dos, cuatro, seis, ocho, diez, ¿verdad? Por lo que cada elemento se ha duplicado. ¿Cómo funcionó? Funcionó con la ayuda de la función de mapa, lo siento, método de mapa dentro de matrices. Así que aplicamos esta función particular llamada double que hemos creado aquí, derecho, a cada elemento de la matriz. ¿Bien? Así que incluso puedes tener un registro de consola por aquí. Di registro de puntos de consola, y puedes decir aquí, puedes imprimir num por aquí. Bien. Entonces sabrás contra qué número se está llamando este. Así se puede ver que se llamó en uno, dos, tres, cuatro y cinco. Si cambio esto a 14 por aquí. Y si guardo esto, verán este giro a 14. Entonces se está llamando por cada elemento que existe en la matriz. ¿Bien? No necesitamos este registro de consola. Bien, acabamos de empezar esto para obtener información adicional, pero así es como va a funcionar. Todo bien. Entonces espero que esto quede bastante claro en cuanto a cómo está funcionando esto y cómo el mapa puede ser útil. Ahora, aquí tenemos una función separada por aquí, ¿no? Esta es una función con nombre. De hecho, puede convertir esto en una función sin nombre o en una función anónima Bien, entonces no necesitas una declaración de función separada para esto. Ahora bien, ¿a qué me refiero en cómo harías eso? ¿Bien? Entonces no voy a borrar esto, pero en realidad copiaría esta cosa por aquí. ¿Bien? Ahora bien, este es un ejemplo de uso anónimo, ¿verdad? Función anónima, justo por aquí. Entonces así es como obtuvimos los números dobles en los que estábamos aplicando esta función a cada elemento de la matriz usando map, ¿verdad? Entonces voy a decir doble anónimo. Bien. Y aquí, en lugar de pasar esta función por aquí, lo que puedo hacer es que en realidad puedo obtener toda esta definición por aquí. Puedo copiar esto y puedo pegarlo por aquí. Y en lugar de doble, esto será función. Bien. Seré la palabra clave de función. Bien. Así que déjame desplazarme un poco hacia abajo y déjame alejarme un poco. Entonces puedes ver esta sintaxis por aquí. Estoy diciendo que hagamos doble anónimo. Entonces esta puede ser cualquier variable que tengas, que puede hacer el trabajo de recolectar arreglos, ¿de acuerdo? Arrays, como en esta cosa, toda esta operación devolverá una matriz, ¿verdad? Entonces necesitas algo para recogerlo, ¿verdad? Entonces estoy diciendo números mapa de puntos. Y en lugar de pasar el nombre de la función, estoy creando directamente la función por aquí. Entonces estoy diciendo función, num, devuelve num en dos. Eso es lo que estoy haciendo enseguida. Todo bien. Y entonces simplemente puedo obtener este registro de consola por aquí. Y simplemente puedo decir doble anónimo, y puedo salvar esto. La salida que obtengas será la misma. Se puede ver, esta es la salida de la pieza de código anterior, y esta es la salida de la pieza de código actual. ¿Bien? No hay ningún cambio en la salida, pero hay como la sintaxis que hemos escrito esta en esta. ¿Bien? Esto es muy conciso. Bien, conciso entonces el primero. ¿Bien? Entonces sí, este es un ejemplo de función anónima en la que estamos creando una función sin nombre solo por el bien de esta operación Entonces, ¿cuándo usarías este tipo de sintaxis y cuándo usarías este tipo de sintaxis? Entonces, si quieres que la función se reutilice en varios otros lugares aparte de esta matriz, entonces deberías tener una función separada y puedes hacer uso de este tipo de sintaxis Pero digamos, si estás creando una función solo con el propósito de la transformación de matriz, entonces puedes tener esa función así. Esto es mucho más conciso y mucho más legible. Puedes ir un paso más allá por aquí. Voy a duplicar todo esto por aquí. Bien. Puedes ir un paso más allá y en vez de como por aquí, función anónima, puedo ver la función de flecha. Entonces aquí, te voy a mostrar un ejemplo usando la función de flecha. ¿Bien? Entonces aquí, se puede decir flecha, bien, función de mapa, y por aquí, estamos viendo num, ¿verdad? Por lo que toda esta sintaxis se convertirá en función de flecha. Entonces esta palabra clave de función no es necesaria, ¿de acuerdo? Y entonces esto se convierte en el tipo de sintaxis de la función de flecha. ¿Bien? Y luego en lugar de imprimir doble anónimo, voy a imprimir doble flecha. ¿Bien? Se puede ver que la salida es la misma, ¿verdad? Ahora bien, esta sintaxis se puede reducir aún más. ¿Bien? No necesitamos llaves rizadas porque solo hay una declaración, ¿verdad Sólo hay una declaración. Entonces, ¿se necesitan llaves No, no es necesario, ¿verdad? Así que voy a venir aquí, me desharé de las llaves, y esto va en una sola línea, ¿verdad? El retorno tampoco es necesario ahora. Bien. Entonces me desharé del regreso. Se puede ver. Y este paréntesis, corchetes redondos tampoco son necesarios. Yo también me desharé de ellos. Se puede ver lo conciso que es esto, bien. Entonces puedes ver solo en esta expresión o solo en esta declaración, realidad estamos transformando toda la matriz por aquí. Si guarda esto, la salida no cambia. Estás obteniendo el mismo resultado, pero mira la sintaxis de la gente, ¿verdad? Esta es la primera sintaxis. Observe cuidadosamente. Función separada. pasando el nombre de la función por aquí, estás aplicando esta función para cada elemento de la matriz, ¿verdad? Obtienes el elemento transformado, lo estás imprimiendo. Estás haciendo uso de la función anónima donde en realidad estás pasando esta función por aquí. Esta es una función anónima sin nombre. Estás aplicando esta función para cada elemento en DRA. Y luego finalmente usando funciones de flecha, se puede ver que la sintaxis es mucho más simplificada, concisa y más fácil de leer. Bien. Entonces verás que este tipo de sintaxis se usa mucho. Bien, y mucha gente se confunde y no entiende lo que está pasando por aquí, especialmente las personas que son nuevas en JavaScript. ¿Todo bien? Si tienes buena experiencia en JavaScript, entonces podrías saber qué es esto. Pero gente que es nueva en JavaScript y que viene de diferentes lenguajes de programación como Java, C plus plus, Python, ¿bien? A menudo les resulta difícil porque, ya sabes, todo esto, ya sabes, todo esto se redujo a una expresión tan pequeña por aquí. Derecha. Entonces espero que esto quede bastante claro. A propósito fui paso a paso. Te mostré cómo se está haciendo esto primero, cómo puedes pasar una función nombrada por aquí. Puedes ver cómo puedes tener función anónima y cómo puedes tener directamente la función de flecha. La mayoría de los tutoriales de temas cubren directamente las funciones de flecha. Bien. Entonces, si por casualidad aprendes sobre el método map dentro de RAS, ellos cubrirán directamente usando esta sintaxis, ¿verdad? Pero quería que todos ustedes entendieran y fueran paso a paso, ¿verdad? Ahora, podemos aplicar este tipo de sintaxis a todos los demás métodos, bien, porque has entendido uno, así que te resultará muy fácil entender el resto, ¿verdad? Entonces esto se trata de mapa. Se puede hacer cualquier tipo de transformaciones, personas, cualquier tipo de transformación. Como si quieres hacer esto tres X, o hacer este diez X, por ejemplo, obtendrás diez, 20, 30, 40, 50, ¿bien? Algún tipo de transformación, ¿verdad? Entonces esto se trata de mapa. Ahora el siguiente en la línea o el siguiente en la cola es el filtro. ¿Bien? Ahora, ¿qué es el filtro? Yo sólo voy a bajar esto. ¿Bien? Así que filter volverá en nueva matriz con elementos que pasen una condición. Ahora, habrá escenarios en los que desea filtrar elementos en una matriz en función de una determinada condición, ¿verdad? Entonces, en ese caso, tal vez quieras filtrar, ¿verdad? Y ahí es donde entra en imagen el filtro. Ahora bien, el filtro es un método que ofrece una manera muy concisa de hacerlo. ¿Bien? Entonces digamos que tenemos esta matriz num bien con dos, cuatro, lo siento. Este no es el elemento. Es uno, dos, tres, cuatro, cinco. ¿Verdad? Esto es lo que es la matriz. Digamos que quiero obtener la lista de números pares. Entonces puedo decir números pares constantes por aquí, y puedo decir números punto. Puedo decir filtro, algo así. Y aquí, puedo decir num puedo decir num módulo dos es igual a cero por aquí. Bien. Y entonces simplemente puedes imprimir en el Oops Entonces, simplemente puedes imprimir en los números pares de aquí. Entonces es algo así. ¿Bien? Entonces me sale un error que N no está definido. Bien, no debería ser N, es num. Señorita impresión. Echo de menos escribir en Num. Bien. Para que puedan ver, esta es una lista de números pares. Entonces lo que está pasando es, esta es una prueba que hemos mencionado aquí, ¿verdad? Esta es una prueba. Entonces, cualquiera que sea el elemento que esté pasando esta prueba se devuelve y se agrega a esta nueva matriz o se filtra y se agrega a esta nueva matriz, ¿verdad? Y estás imprimiendo en esta nueva matriz, ¿verdad? Entonces se filtra toda la matriz y tienes una matriz filtrada que coincide con esta condición, ¿verdad? Ahora, digamos que si tienes tres por aquí, entonces solo obtendrás números que son divisibles por tres Se pueden ver tres por aquí. Bien. Entonces así es como funciona el filtro, bien. El siguiente método que tengo es sobre reducir. Ahora ¿qué es reducir? Reducir hará el trabajo de reducir la matriz a un solo valor, ¿verdad? Ahora bien, esto lo hace aplicando una función, ¿de acuerdo? Y puede haber muchos casos de uso si quieres agregar, digamos, la suma, si quieres obtener la suma de todos los elementos en una matriz, entonces puedes hacer uso de reducir por aquí. Así que me apegaré a nuestro ejemplo de array, y digamos que queremos obtener la suma de todos los miembros de la matriz, ¿verdad? Entonces puedo decir números por aquí. Esto es lo que nuestros arrays, puedo decir reducir por aquí. Entonces quiero reducir esta matriz. Bien. Ahora, voy a tener que pasar en el acumulador Bien. Entonces voy a decir acumulador. Puedes ver la sintaxis por aquí. Puedes obtener el valor anterior, Bien, y puedes obtener el número real. Entonces voy a llamar a acumulador por aquí y voy a ver el valor actual Bien. Así que esto es lo que voy a decir, ¿de acuerdo? Y puedes ver la documentación de la función que acepta hasta cuatro argumentos, la meta de suma reducida llama a la función callback una vez por cada elemento de la matriz, ¿verdad Entonces voy a decir acumulador ahora ¿qué es un acumulador? Por lo que acumulador acumulará retorno de las devoluciones de llamada ¿Bien? Así que con cada iteración, ¿de acuerdo? Con cada iteración, tendremos acceso al valor actual, ¿verdad? Entonces, cuando sea así, déjame desplazarme hacia arriba. Entonces cuando la iteración es con uno, bien, tomará uno en imagen Se lo agregará a la suma. Después con la siguiente iteración, agregará dos a la suma Y sea cual sea la suma con cada iteración, eso está siendo retenidas por acumulador, ¿verdad? Por aquí. Entonces estamos diciendo acumulador, valor actual, y por aquí, voy a decir acumulador más valor actual Bien, eso es todo. Y entonces voy a decir registro de consola por aquí. Voy a iniciar sesión en Console, y necesito recopilar esto en Necesito recolectar esto ¡Uy Entonces necesito recoger esto en una variable, digamos, vamos a sumar. Y voy a tener algunos por aquí. Ahora, si digo Guardar, verá 15 salida SD. Todo bien. Entonces espero que esto tenga sentido en cuanto a cómo está funcionando esto, ¿verdad? Y tienes algo de buena claridad por aquí. Bien, entonces llevé esto a una nueva línea y solo para que sea realmente visible para todos ustedes, pero no lo fue. Todo bien. Pero sí, esto es lo que es todo el método para reducir. Todo bien. Ahora, entonces tenemos para cada uno. Ahora es para cada uno. Así que para cada uno se ejecutará la función proporcionada una vez por cada elemento de la matriz. Bien. Entonces lo que puedo hacer aquí es que sólo voy a ir a la nueva línea. Bien. Algo así. Y ahora puedo decir número. Bien, los números enseñados para cada uno, puedo decir. Entonces para cada elemento de la matriz, lo que quiero hacer es que quiero imprimirlo, digamos. Voy a llevar la salida a la consola, y aquí, voy a imprimir esto. Vaya, echo de menos quitar esto, voy a guardar esto. Se puede ver uno, dos, tres, cuatro, cinco, entonces esto es array, ¿verdad? Entonces así es como funciona cuatro cada uno. Cualquier tipo de función, se puede aplicar a cada elemento de la matriz. ¿Todo bien? Tenemos algo llamado como encontrar por aquí. Fine devolverá el primer elemento que satisfará una condición particular por aquí. ¿Bien? Entonces eso es lo que es encontrar. ¿Bien? ¿Y cómo se puede hacer uso de ella? Entonces digamos que queremos obtener el primer número par de la matriz, ¿verdad? Digamos que eso es lo que es el requisito. Entonces puedo decir números punto encontrar por aquí, y puedo decir num por aquí, y será num porcentaje dos es igual a cero, algo así. Bien. Y necesito recopilar esto en así que necesito recopilar esto en realidad, directamente en una variable para poder decir let first even, voy a llamar a esto como primer número de Steven. Y voy a decir registro por aquí, registro de consola, y voy a decir por Steven. Guarda esto y verás que el primer par son dos por aquí, ¿verdad? Por lo que esto obtendrá el primer elemento que satisfaga una condición particular Todo bien. Espero que esto quede claro. Tenemos algunos por aquí. Entonces algunos comprobarán si al menos un elemento pasa una prueba en particular, ¿verdad? Entonces eso es lo que comprobará. Y por aquí, sólo voy a hacer uso de ella. Ahora, la definición de suma dice que comprobará si al menos un elemento pasa una prueba en particular. Ahora bien, estas son pruebas que hay que definir como la función por aquí. Y si la prueba es pasada por al menos un elemento en la matriz, entonces obtendrás un verdadero booleano, ¿verdad Entonces esto devuelve booleano. Entonces puedo decir números por aquí, punto, y podemos hacer uso de la suma por aquí. Bien. Y voy a decir num. Bien. Y la condición que quiero verificar es num menos que cero, digamos, por ejemplo. ¿Bien? Entonces esto va a devolver booleano, así puedo decir let y tiene negativo Bien, entonces si tiene negativo, me va a dar una fila booleana de caídas Puedo registrar esto y voy a decir que tiene negativo. Si guardo esto, verás caídas. Entonces esta matriz no tiene ningún tipo de números negativos. Bien. De hecho, puede reemplazar esto para obtener una matriz de números negativos. Entonces puedes decir menos uno, dos, tres, oops, tres, cuatro, y así sucesivamente, ¿verdad Entonces esto tiene números negativos, ¿verdad? Estoy saludando a una matriz sobre la marcha. Si guardo esto, obtendrá salida TruSC. Entonces esto tiene sentido en cuanto a cómo esto se puede usar para verificar que al menos un elemento pase una prueba. Ahora bien, esto es útil en escenarios, si quieres ejecutar una comprobación rápida en la matriz y obtener un booleano, sí o no, y basado en ese booleano, sí o no, es posible que quieras hacer algo ¿Bien? Entonces ahí es donde es útil por aquí. Bien. Cada. Ahora, cada es solo evosión de suma Entonces algunos comprobarán si al menos un elemento pasa una prueba, pero cada uno comprobará si todo el elemento pasa una prueba. Así que en realidad puedo duplicar esto por aquí, y puedo decir, tiene o simplemente voy a decir todos, bien. Y voy a imprimir esto tiene cada por aquí. Y en vez de suma, voy a tener cada. Entonces, ¿cada elemento es cada elemento menor que cero? ¿La salida es falsa? No, porque un elemento es cada elemento en realidad. Entonces la condición es ¿cada elemento es menor que cero? Entonces esto es falso. Lo siento, me confundí un poco. Entonces porque tenemos tres elementos que no son menores que cero, uno es menor que cero, ¿verdad? Entonces esto está absolutamente bien. Ahora bien, si quito negativo de esto, bien, ya verás que da da fals por aquí Y eso es porque no todos los elementos son menores que cero. Así que para ser verdad por aquí, voy a tener que hacerlos negativos a todos. Y si ahorro, te pondrás verdad porque ahora todos los elementos son negativos por aquí, ¿de acuerdo? Para que puedas ejecutar este tipo de chequeos con la ayuda de cada. Tienes concat. Todo bien. Así que esto es otra cosa interesante, ¿de acuerdo? Si quieres combinar dos arrays en uno, puedes hacer uso de esto. Entonces digamos que tengo más números por aquí. Bien. Más número es seis, siete y ocho por aquí, ¿verdad? Entonces lo que puedo hacer es decir números o dejarme decir bien, números, voy a decir números punto concat por aquí y puedo decir más números, ¿verdad Y puedo asignar esto a una nueva matriz, ¿verdad? Así que puedo decir vamos nueva matriz, algo como esto. Imprimiré en nueva matriz. Bien. Voy a decir Console log por aquí, y voy a decir nueva matriz. Voy a guardar esto y se puede ver, uno, dos, tres, cuatro, cinco, seis, 79. Todo bien. También puedo añadir ocho por aquí. No sé por qué me lo perdí. Así que sí, tienes esto, ¿verdad? Entonces sí, esto es concat. Se concat a matrices, rebanará. Así que slice devolverá una porción de una matriz, Bien. Déjame mostrarte esto. Así que puedo decir vamos a rebanadas entumecido por aquí Bien. Y puedo decir números por aquí. Uh, números, tot, slice, y puedo especificar por aquí que quiero el índice inicial del índice uno al índice tres parte de la matriz Bien. Ahora puedo registrarlos, registrarlo por aquí así puedo decir rebanada entumecida. Se pueden ver dos y tres. ¿Bien? Entonces dos y tres por aquí. Así que solo estás cortando la matriz. Bien. Empalmar ahora ¿qué es rebanar Esto te ayudará a eliminar o reemplazar los elementos. Bien. Ahora bien, ¿cómo funciona esto? Entonces déjame mostrarte esto. Entonces digamos que tengo SON de frutos. Bien, entonces déjame desplazarme hacia abajo. Entonces puedo decir que dejen frutas por aquí. Bien, puedo decir manzana. Yo puedo tener ¡Uy, puedo tomar plátano! Bien, y voy a tener digamos naranja. Bien. Bien. Esto está hecho. Y digamos que quiero, quiero quitarle el plátano y agregar el mango. Entonces voy a decir frutas, tot, empalme. Bien. Diré en un índice. ¿Bien? Entonces estoy especificando en un índice, elimine uno. Bien. Se puede ver el recuento de eliminación. Entonces, comenzando un índice, elimine un elemento y agregue mango. Algo como esto. ¿Bien? Y luego si imprimes en frutas, verás la salida como manzana, mango y naranja, ya puedes ver. Entonces sí, así es como funciona. Únete. Ahora, ¿qué significa join? Entonces, a veces habrá un requisito en el que desea unirse y obtener todos los elementos dentro de una matriz en una cadena. Así que absolutamente puedes hacer eso. Entonces puedo decir que dejemos que todos los frutos. Bien, puedo decir frutas tat join y ¿cómo quiero unirme? Entonces este es un separador que quiero agregar por aquí. Bien. Entonces voy a añadir una coma Quiero que se separen todos los nombres de las frutas, y puedo decir todas las frutas de aquí. Se puede ver manzana, mango, naranja. Ahora, lo que sea que agrego aquí, si agrego exclamación, verás que se agrega exclamación para todos los Entonces me quedaré en coma porque eso es lo que parece natural por aquí, ¿verdad? Reverso. Ahora el reverso es bastante simple, bastante directo. Se puede obtener un reverso de un número con la ayuda de este método. Entonces puedo decir números punto inverso. Algo así. Bien. Y por aquí, puedo decir consola dot log, y puedo decir número inverso. Obtendrás 54321. ¿Todo bien? En especie, por supuesto, como su nombre lo dice, bastante fácil de identificar y entender también. ¿Bien? Puedes ordenar los elementos en una matriz, ¿verdad? Entonces se puede decir ordenarlo. Y puedes decir números por aquí, T, tipo. Bien. Y en realidad puedes especificar por aquí. Así que acabaré con esto por aquí. Bien. No voy a agregar ninguna lógica, luego agregaremos la lógica, y veremos cuáles son los problemas que estamos resolviendo. ¿Bien? Entonces, si haces uso de especie de esta manera. ¿Bien? En realidad, la función que hemos creado en realidad ya está ordenada, ¿verdad? Así que permítanme actualizar los números por aquí. Bien. Entonces actualizaré los números. Diré tres, uno, y voy a añadir diez por aquí y dos, por ejemplo. Bien. Y voy a ver esto. Ahora verás que no está ordenado realmente en orden ascendente. ¿Bien? Ahora bien, esto se debe a que es por defecto como cadena. Entonces esta comparación porque lo que está sucediendo es que la comparación está sucediendo en forma de cadena. Entonces los números no se ordenan de la manera correcta. Ahora para que esto se ordene de la manera correcta, lo que podemos hacer aquí es agregar dos argumentos, usando las funciones de flecha, así puedo decir A y B por aquí, y voy a hacer uso de dos argumentos, y voy a decir A menos B por aquí. Bien, por aquí. Y si guardo esto, verán uno, dos, tres y diez. Por lo que está ordenado por aquí ahora. Pero, ¿qué magia le hizo esta lógica a esta cosa clasificadora de aquí? ¿Bien? ¿Y cómo funcionó? Todo bien. Entonces lo que pasó es A y B son los dos elementos de las matrices que se compararán en cualquier momento dado, ¿verdad? Y esta comparación se hará por método de ordenación por aquí. Bien. Por lo que estos dos argumentos se pasan primero. Bien, en estos parámetros se pasan dos argumentos. Y entonces lo que ha pasado es A menos B se calcula. Ahora bien, si A menos B, ahora digamos si esto está trabajando en tres y uno, ¿verdad? A es tres y uno es B. ¿Bien? Ahora, A menos B es dos. El número es positivo. ¿Verdad? Entonces B se ordenará antes de A porque si el número es positivo, significa que B es menor que A. Así que B vendrá primero. Si el número es negativo, entonces lo que va a pasar es que A se moverá antes que B, en ese caso, ¿verdad? Y si el retorno es cero aquí, entonces los dos serán considerados como iguales y serán tratados por igual. Bien, así que esto es atendido por SOT por aquí. Solo hay que pasar en esto porque con la ayuda de menos por aquí, son tratados como números y no como cadenas. Todo bien. Entonces así es como funcionará la clasificación cuando estés haciendo uso de SOT por aquí. Todo bien. Entonces eso es sobre las funciones o debería decir métodos en JavaScript con respecto a las matrices, ¿verdad? Y así es como se puede hacer uso de ella. Para que puedas ver cómo empezamos inicialmente. Comenzamos con los conceptos básicos como cómo puedes pasar una referencia de función aquí al método de mapa. Y luego convertimos esto en anónimo, y luego convertimos esto anónimo en mapa de aquí. Lo siento, no mapa, funciones de flecha, debería decir, ¿verdad? Y luego vimos todas las funciones, todos los métodos que existen con arrays, ¿verdad? Para que puedas ver sort, reverse. Todos estos son útiles en algún momento en el que estás programando y trabajando con matrices para ahorrarte mucho tiempo y mucho código también, haciendo que tu código sea mucho más legible, pero ayudándote a hacer las cosas de una manera mucho más concisa y legible. Todo bien. Entonces espero que hayas podido seguir esta guía paso a paso, y espero que esto haya sido súper útil. 9. Foco del proyecto: construye tu propio convertidor de unidades: Bien, entonces, ¿cómo están todos? Entonces es hora de que construyamos un convertidor de unidades que va a hacer cada trabajo de convertir un valor a diferentes unidades. Entonces se va a convertir de una unidad a otra. Si, por ejemplo, entro 100 por aquí o me dejo a 110. Y digamos que quiero convertir de metros a pies, puedo conseguir esto convertido, y se puede ver 110 metros es este muchos feeds. Ahora, puedo decir 150 por aquí. Puedo hacer que esto se convierta de kilogramos a libras. Se puede ver que esto ahora está en libras, e incluso puedo convertir esto de Selsius a fahrenheit Así se puede ver uno de 50 centígrados es 302 fahrenheit. Entonces este es un convertidor de unidad simple y una interfaz bastante simple también, nada demasiado elegante o chassi Todo bien. Así que vamos a construir esto. Así que aquí estoy rápidamente en el código VS, y tenemos este archivo HTML, el archivo CSS y el archivo JS índice dentro de una carpeta. Estos tres archivos existen en la misma carpeta. Tengo este código HTML por aquí y voy a empezar a modificar este código por aquí. El título de esta página en particular será convertidor de unidades aquí. Voy a deshacerme de esto, y voy a tener el mismo texto convertidor de unidades aquí arriba que la etiqueta H one. Todo bien. Ahora lo que necesito por aquí es lo primero, necesito un insumo. Todo bien. Entonces voy a decir input desde donde voy a introducir el valor que deseo convertir. Esta entrada va a ser un número por aquí. El tipo es número. ID es valor de entrada porque necesito referir esto desde JavaScript para que pueda obtener los valores de entrada que el usuario ha ingresado. Necesito tener una identificación por aquí. Voy a tener un marcador de posición llamado Enter value. Vaya, algo como esto, ¿verdad? Y yo sólo voy a cerrar esto. Entonces se hace la entrada. Ahora, lo que necesito hacer es que necesito tener ocho desplegable, y para eso, voy a hacer uso de select por aquí, y voy a ver ID como tipo de conversión por aquí. Entonces, qué tipo de conversión deseo hacer. Dentro de esto, voy a tener opción Bien. Ahora, opción son medidores para caber por aquí. El valor, así que voy a tener valor por aquí. El valor es de M a FT, ¿verdad? Entonces voy a tener valores individuales a esto, cuales puedo hacer uso. Entonces aquí voy a decir metros a pies. Esto va a ser kilogramos a libras kilo gramos a libras. Bien esto va a ser KG a LP. Todo bien. Y, uh, entonces esto va a ser C Celsius. Bien. Lo que quiero decir es de Celsius a fahren de altura Algo así. ¿Bien? Uy. Entonces, sí, he corregido la ortografía, y sí, esto es lo que es Entonces será de C a F por aquí. Bien. Esto está hecho. Tenemos este convertidor de unidades, el cuadro de texto, y este desplegable por aquí que puedes ver para la selección de valores, Ahora, una vez hecho esto, después selección y todo hecho, necesito un patrón por aquí, ¿verdad? Entonces puedo decir que el ID de patrón es convertir. ¿Bien? Esta será la identificación. Y puedo tener un texto llamado Convert por aquí. ¿Bien? Entonces este es un botón que se está visualizando. Y después de esto, necesito mostrar el valor convertido también. Entonces voy a tener una etiqueta P, lo que va a decir, vaya, voy a tener así que no necesito ID por aquí, pero simplemente puedo decir convertirlo El valor es o Voy a mostrar el valor dentro de un lapso por aquí. ¿Bien? Y voy a tener cero inicialmente, y puedo tener ID como convertido. Valor, algo así. Bien. Entonces esto se hace, se puede ver, el valor convertido es cero. Todo bien. Entonces eso es todo en el HTML. Bien. No hay mucho que vamos a estar haciendo en el HTML. Solo asegúrate de tener el archivo Ja Script vinculado así y también puedes tener el archivo CSS enlazado aquí. Entonces solo voy a tener el enlace para CSS, y lo haré en la parte superior. Bien. Entonces dentro de la cabeza, sólo voy a tener enlace por aquí. Bueno, voy a decir hoja de estilo. Bien. Y voy a decir href, estilos punto css Todo bien. Esto está hecho. Bien, sí, ya está. Entonces esto es desde la parte HTML. Ahora, pasemos a la parte de Jascript, y veamos cómo puedes construir un convertidor Junit usando JavaScript y agregar algo de vida a esta Esta página web es bastante estática en este momento. pasaría nada si terminas los valores NC convertir, ¿verdad? Porque no hay vida. Entonces, ¿quién va a agregar vida? JaSbit, por supuesto Ahora, lo primero que necesito por aquí son diferentes funciones, ¿verdad? Entonces estas conversiones que voy a hacer, necesito tener una manera de hacer estas conversiones. Y lo que puedo hacer es por cada conversión que quiera hacer, voy a tener una función creada, ¿verdad? Entonces la primera conversión que estoy teniendo por aquí es metros a pies, luego tengo kilogramos a libras, Celsius a Fahrenheit Tengo tres funciones, derecho, y necesito tener un oyente por aquí que escuche el clic de botón de Convertir Entonces eso es algo que tenemos que hacer. Todo bien. Entonces no sólo voy a tener funciones normales. Por supuesto, puedes hacer funciones normales, pero voy a tener un objeto, y voy a llamar a esto como convertidor de Unidad, y voy a tener los métodos creados dentro de este objeto, ¿verdad? Entonces voy a decir M a F T, o? Y voy a decir función por aquí. Bien. Y solo voy a deshacerme de esto aquí, el parámetro será así si es metros a pies, entonces el parámetro de parámetros estará en metros, ¿verdad? Y puedo decir regreso. Puedo decir metros en. Y ¿cómo convertirías un metro en pies? Entonces necesitas multiplicar un metro por 28084, ¿verdad? Entonces esta es la fórmula estándar. No hay nada elegante por aquí. ¿Bien? Entonces sí, esto está hecho. Estoy consiguiendo estoy recibiendo un error marcas correctas, es porque me he perdido un igual a por aquí. Bien. Entonces esto está hecho. Este es el primer método que tengo M, que es metros a pies. Voy a tener KG a B por aquí. ¿Bien? Esta va a ser otra función por aquí, y esto va a aceptar kilogramos porque estamos convirtiendo kilogramos a la de libras, ¿verdad? Entonces voy a decir regreso. Voy a decir kilogramos en. Y vamos a multiplicar este valor con 2.2 0462. Entonces este es multiplicador estándar si quieres convertir kilogramos a libras, solo puedes buscar en Google cómo convertir kilogramos a libras y encontrarás cualquier número de fórmulas, estoy haciendo uso de esta. ¿Bien? Entonces este es un multiplicador que tienes C F. Así que esto es para Celsius a Fahrenheit por aquí. Voy a agregar función. Voy a decir Celsius, algo así, y luego por aquí, voy a decir vuelta. Hay una fórmula para convertir Celsius a Fahrenit. Voy a forzarlo a multiplicarlo por nueve por cinco aquí y voy a decir más 32, algo así. Bien. Entonces estas son todas las funciones, debería decir. Así que hemos creado métodos dentro del objeto, y, por supuesto, puedes tener estos métodos creados fuera así como funciones. ¿Por qué he creado dentro del objeto es para propósito de agrupación lógica. Ahora, siempre que tengas un programa de script jaw, podrías crear objetos con fines de agrupación, ¿verdad? Entonces aquí estoy agrupando estos métodos juntos, ¿verdad? Entonces esto está hecho. Entonces voy a empezar a definir el oyente por aquí, así voy a decir documento por aquí Uy. Esto se convirtió en documento. Bien. Diré punto y obtendré elemento por ID por aquí. Bien, y voy a decir convertir. ¿Por qué convertir? Porque este es el ID que hemos definido aquí en el botón HTML para, ¿verdad? Entonces eso es a lo que tenemos referirnos si se está refiriendo a botón por aquí y voy a decir al hacer clic por aquí. ¿Bien? Entonces al hacer clic de esto, necesitamos hacer uso de funciones de flecha, y voy a tener la lógica en cuanto a lo que sucede al hacer clic. ¿Bien? Ahora, la lógica puede ser tan simple como mostrar una alerta. ¿Bien? Si guardo esto y si digo convertir, ¿ok? No se muestra ningún cuadro de alerta. Entonces no está funcionando porque aquí, la C para click no puede ser mayúsculas. Tiene que ser pequeña. Es una pequeña palabra pequeña. ¿Bien? Todo está en pequeño al hacer clic. Ahora bien, si cambio esto, va a funcionar. Se puede ver. Ahora, necesitamos tener la lógica por aquí. ¿Bien? Entonces esto se está activando con el clic del botón. Bien. Entonces, ¿cuál es la lógica? ¿Cómo vamos a definir la lógica? Entonces, lo primero es que necesitamos ver qué opción se selecciona de esta. Bien. Entonces, de este desplegable, qué opción se selecciona, ¿verdad? Entonces una vez que también tenemos esto, necesitamos obtener el valor del texto de entrada por aquí porque ese es un valor que vamos a convertir. Entonces el valor del texto de entrada y la opción del menú desplegable. Estas dos cosas necesitamos para llegar hasta aquí. Bien. Así que voy a decir vamos a introducir el valor por aquí, y puedo decir documento punto. Puedo decir obtener elemento por ID por aquí. Bien. Y voy a decir valor de entrada. Bien. ¿Qué es el valor de entrada? El valor de entrada es el ID que has asignado aquí. Eso es lo que estamos llegando hasta aquí. ¿Bien? Esto está hecho, y vamos a decir valor de punto por aquí. Bien. Tenemos esto por aquí. Ahora bien, esto estaría en cadena por defecto, ¿verdad? Necesitas hacer uso de esto para el cálculo, ¿verdad? Porque estarás pasando este valor a esta función. Entonces lo que podemos hacer es que podemos hacer una conversión explícita por aquí. Podemos decir pase flotar y vaya, puedes venir aquí y aquí, puedes esto, algo como esto, ¿verdad Entonces tenemos un valor flotante de cualquier usuario que haya ingresado en el TextFX Bien, esto está hecho. Ahora puedo decir que la conversión. Escriba por aquí. ¿Cuál es el tipo de conversión? ¿Qué tipo de conversión quieres hacer aquí? Entonces puedo decir documento punto obtener elemento por ID. Y me voy a referir al tipo de conversión. Bien. Ahora bien, lo que yo recomendaría es por aquí, deberías copiar. Entonces aquí puedes ver, esta es la identificación. Puedes copiar esta identificación y agregarla aquí. Bien, en lugar de escribir. Porque si hay un solo error, no obtendrás el valor correctamente. Y puedo decir valor por aquí, ¿verdad? Y luego por aquí una vez que tengamos esto, puedo mostrar esto en alerta. Puedo decir valor de entrada, coma, puedo decir tipo Cosion. Algo así. Se puede ver NN puedo ingresar 100. Estás viendo 100 por aquí, déjame congatenar Entonces puedo decir algo como esto. Bien. Entonces, si agregas 200, verás 200 y metros a pies, ¿verdad? Si cambio a kilogramos a libras, verás KG a LB, ¿verdad? Porque estás obteniendo el valor. Por aquí. ¿Cuál es el valor? El valor es algo que has definido aquí contra la opción. Cada opción tiene un valor y te estás refiriendo al valor de aquí en HTML. Puedes ver Celsis a fahrenit C F. Así que estás obteniendo todo a la perfección, aunque ingreses, digamos, si entro un valor de punto flotante, obtendrás ese valor completo ¿Bien? Hasta ahora tan bien, así somos capaces de recuperar lo que sea que el usuario esté entrando en lo que llamamos el formulario de aquí, ¿verdad? Ahora, lo que voy a hacer es que puedo agregar puedo agregar puedo agregar una variable por aquí. Entonces puedo decir convertirlo. Valor. Entonces, ¿por qué es el valor convertido? ¿Bien? Entonces puedo decir valor convertido. Bien, y el valor convertido es igual a, así que puedo hacer uso del tipo de conversión por aquí. Ahora, voy a tener una condición si el tipo de conversión es igual a M dos FT. ¿Bien? Si el tipo de conversión es igual a M a FT, diré convertidor de unidad a FT porque esta es una función o el nombre del método, debería decir, voy a pasar en valor de entrada. Bien. De lo contrario, lo que yo haría está aquí. Bien, si no, tendría otro cheque por aquí. Diré que el tipo de conversión es igual a. Diré KG a LP. Solo asegúrate de tener estas palabras clave correctamente. Si quieres, puedes copiarlo desde el archivo HTML. Pero cualquier tipo de error tipográfico obtendrá mal la condición. ¿Bien? Entonces puedes decir etiqueta de convertidor de unidad puedes decir KG a LB por aquí y puedes pasar en valor de entrada. Algo como esto. Esto está hecho. Voy a tener dos puntos por aquí. Ahora aquí, si ambos son falsos, si no hay coincidencia para ambos, voy a tener convertidor de Unidad enseñado C F porque esto es lo que queda, ¿verdad? Por lo que tiene que ser distinto seleccionado. Entonces esta fórmula está hecha. Esta condición está hecha. Lo que estamos haciendo aquí es que estamos teniendo un control por aquí si el tipo de conversión es metros para caber. Si eso es cierto, con la ayuda del operador ternario, estamos haciendo esta llamada por aquí, esta llamada al método Si esto no es cierto, entonces estamos teniendo otro operador ternario por aquí Que está anidado. Entonces vamos a tener otro cheque. Si esto es cierto, si esto es cierto, entonces esto se ejecuta, lo contrario, esto se ejecuta porque esto es lo que queda, ¿verdad? Entonces tiene que ser cualquiera de estos tres, ¿verdad? Ahora aquí, lo que voy a hacer es voy a decir documento, punto, obtener elemento por ID, y por aquí, voy a decir valor convertido. ¿Bien? ¿Por qué convertir el valor? Porque tenemos este ID para span. Entonces vamos a obtener este valor convertido. ¿Bien? Voy a decir contenido de texto de punto. Algo así. Voy a decir valor convertido por aquí. ¿Bien? Porque esa es una variable que está teniendo este valor creado, ¿ verdad? Entonces esto está hecho. Ahora lo que puedo hacer es guardar esto y ponernos a prueba esto. Entonces si digo 100 metros a pies, convertir, ya se puede ver. Ahí está la salida kilogramos a libras. Ahí está la salida. Si tienes grados Celsius a Fahrenheit, ahí está la salida. Se puede ver. Ahora, una mejora que puedes hacer es que hay tres decimales o habrá número de decimales porque no hay restricción Entonces puedes agregar tot a fijo por aquí y puedes decir por aquí, algo como esto Entonces ahora se fijará a dos decimales por aquí, 220.46 ¿Bien? Algo así, por aquí. Todo bien. Entonces sí, esto es sobre es como puedes construir una moneda o lo siento, no moneda. Este convertidor de unidad. Lo siento. Todo bien. tener alguna validación por aquí para que puedas decir si esto no es igual a no un número. Bien. Lo siento, es AN. Entonces necesito pasar el valor de entrada por aquí, y luego ejecutarías esto, o. Entonces ejecutarías esto, moverás esta frase de cierre al final por aquí, algo así. Bien. Y voy a añadir así por aquí. Bien, esto está hecho. Y si esta condición falla, entonces puedes mostrar una alerta. Bien, por favor ingrese un número válido. Entonces una pequeña validación por aquí, verificación de validación que asegurará que cualquier usuario que esté ingresando por aquí es un número válido. ¿Bien? Eso es lo que va a hacer esta comprobación. Bien. Entonces digamos que si entro 100 por aquí, va a funcionar bien. Pero si entré 100 o cualquier otra cosa por aquí, no soy capaz de escribir nada por aquí porque este tipo es el número. Pero aún así agregué este cheque por aquí. Si por casualidad, esto no es un número, I condición Nian, por lo que devuelve un valor booleano que indica si el valor es un valor reservado Nian, Si es un, eso no es igual a, así que si esta condición es verdadera, entonces solo esto se ejecutará, lo contrario obtendrá un error. Por aquí, que es una alerta. Todo bien. Entonces esto se hace hasta el momento. Ahora, cambiaremos a estilos por aquí. Vamos a añadir un poco de estilo básico y vamos a hacer que se vea decente por aquí. Bien. Así que voy a empezar con Body por aquí. Familia de fuentes Straightaway, I'll say. Yo seleccionaré a Sinef por aquí. Bien. Algo así. Y luego tengo texto alinear por aquí. Diré centro. Diré margen, margen será cero. Déjame ver si esto. Se puede ver que todo está centrado ahora. Margen también es relleno cero, voy a decir 20 píxeles por aquí. Diré que el color de fondo es que puedo tener esta Alice azul. Puedes seleccionar lo que quieras, ¿de acuerdo? Un poco de tema azulado que tengo. Si quieres blanco, puedes seleccionar humo blanco. Depende totalmente de tu elección, ¿verdad? Puedes seleccionar lo que quieras aquí. Bien. Esto está hecho. Voy a añadir un espacio. Ahora después del cuerpo, voy a llegar a H uno. H uno es donde estamos mostrando esa unidad convertir un rumbo por aquí. Entonces voy a decir color, y puedo tener negro. Debería tener negro por aquí. Yo sólo me apegaré al negro. personalizar esto si lo deseas, bien. Ahora para entrada, entrada donde el tipo de tipo es número, bien. Entonces bien para esto y voy a añadir una coma para seleccionar por aquí Bien. Para ambos estos , como, necesito agregar, digamos, relleno. Bien. Entonces no hay relleno. Entonces si ingresas 100 por aquí, no hay relleno, así que voy a decir padding, dos puntos diez píxeles. Bien. Puedes ver alguna cantidad decente de relleno, puedes agregar margen por aquí. Bien, margen de diez pixeles. Bien, ya puedes ver un poco de espaciamiento ahí. Bien. Y se puede decir frontera por aquí. Entonces el borde es de un píxel, sólido, y puedo decir HTD Entonces este código de un color que uso para el borde, puedes ver, está atenuado, algo así como Bien. Y puedo decir radio fronterizo. Así que le voy a dar una especie de sensación redonda. Bien, entonces solo voy a agregar cinco pixeles. Por lo que los bordes se redondearán ahora un poco, ligeramente redondeados por cinco píxeles. Lo siento, ligeramente redondeado por cinco píxeles por aquí. Lo siento. Bien, esto está hecho. Ancho, voy a añadir Los anchos pueden ser de 200 pixeles por aquí Bien. Así que está hecho para ambos, ¿ de acuerdo? Para botón. Bien, el botón se ve crudo ahora mismo. Entonces déjame hacer algo por botón por aquí. Uy. Para botón, voy a decir relleno primero, relleno de, voy a decir diez píxeles y 20 píxeles. Bien. Entonces puedo tener aros de color de fondo. Entonces esto tiene que ser punto y coma, color de fondo. Bien. El color de fondo puede ser, yo diría azul. Voy a ver si esto, ya ves, azul, pero las fronteras se ven mal. Bien, debería decir. Voy a tener frontera como monja tal vez. ver si Sí. Boda es monja Puedo decir que el color es blanco. Blanco donde es blanco por aquí, se puede ver convertir blanco. Se puede tener radio de borde, radio de borde, puedo decir fi pixel porque lo he dado para los otros elementos. Bien. Ahora, curso si pasas el cursor sobre esto, quiero que esto esté cambiando, así puedo decir puntero del cursor Entonces ahora si voy por aquí, se puede ver el cursor girando para puntero. Bien. Esto está hecho. También puedo agregar un efecto hover Entonces botón, dos puntos, puedo decir *** y puedo decir color de fondo. Y puedo tener azul oscuro. Entonces, si pasas el cursor sobre esto, verás azul oscuro. Algo así como un efecto, ¿verdad? Ahora esto está hecho, y podemos tener e tyling para la pantalla, que es para la etiqueta P. Ese puede ser el tamaño de fuente. Sólo voy a aumentar el tamaño de la fuente a 18. Sólo voy a cambiarlo a 18 y voy a tener margen de digamos diez pixeles. Si guardas esto, tienes esto. Bien. Ahora, me acerco un poco. ¿Bien? Entonces me acerco un poco. Puedes ver por aquí para que los alumnos puedan verlo correctamente, pero puedes ver el resultado por aquí. Bien, entonces ahora se ve bastante decente. También abrí la aplicación en el modo de pantalla completa, para que tengas una mejor vista. Bien, 2.200 y puedes ver las conversiones por aquí, ¿verdad? Entonces esto va a funcionar bien. ¿Bien? Se ve bastante decente. Puedes personalizar el CSS en función de tus requerimientos. Puedes cambiar el color dependiendo de tus preferencias de color. ¿Bien? Entonces eso es sobre la unidad Coto usando jaw Script Espero que esto haya sido súper divertido. 10. Exhibición de proyectos: crea una aplicación dinámica de lista de tareas pendientes con JavaScript: Bien, así que es hora de que hablemos de hacer aplicación de listas usando JAScript HTML, y CSS Entonces aquí puedes ver esta aplicación que vamos a construir, y puedes ver que hay una para hacer ya agregada aprender las funciones de Ja Script. Todo bien. Puedo agregar más todos desde este cuadro de entrada por aquí. Puedo decir, aprender bota de primavera, y puedo decir agregar tarea. Puedo traer abarrotes. Bien. Algo así. Y puedes agregar las tareas. Puedes hacer agujeros en estos, y puedes marcarlos como hechos también. Bien, entonces esta es una aplicación sencilla que vamos a construir. Vamos a hacer uso de JavaScript, HTML y CSS. ¿Todo bien? Emocionado, vamos a saltar de inmediato. Entonces aquí estoy en el código de Visual Studio, que es el editor que voy a usar. También tengo este navegador abierto en el lateral con Live Server. Tengo tres archivos abiertos index dot HTML style dot css y index dot Gs. Ahora, antes de seguir adelante, solo asegúrate de que estos tres archivos residan en la misma carpeta. Todo bien. Ahora voy a comenzar con el archivo HTML. Primero, voy a añadir una exclamación. ¡Uy! En realidad estoy en archivo JavaScript, así que voy a llegar al archivo HTML. Voy a añadir una exclamación, y voy a conseguir algo de código estándar por aquí. Bien. Entonces por aquí, puedo dar el título del documento en cuanto a hacer la aplicación de lista, ¿de acuerdo? Algo así. Todo bien. E incluso puedes tener E H una etiqueta por aquí como título. ¿Bien? Entonces puedo decir H uno. Y se puede decir para enumerar por aquí. Bien, algo como esto. Todo bien. Ahora, vamos a necesitar dos cosas por aquí. Uno es input y otro es ePaton, ¿de acuerdo? Entonces voy a crear un div primero, y voy a tener una entrada por aquí como esta. Voy a llamar a esto como vaya, perdón, escriba como texto por aquí. Bien. ID es el ID es entrada de tarea. Necesito asignarle ID porque me voy a referir a este elemento directamente desde el script Ja para que pueda obtener lo que el usuario realmente ha ingresado por aquí. Voy a decir entra a tu tarea, algo así. Todo bien. Ahora en la siguiente línea después de la entrada, voy a tener un botón por aquí, ¿verdad? Entonces botón dirá ID, y voy a llamar a esto como agregar tarea por aquí, algo así. Y entonces esto será agregar tarea, algo así como Bien. Esto está hecho, y entonces creo que todos estamos bien por aquí. Bien. Déjame ver. No estamos viendo ningún tipo de salida aquí. Entonces veo la salida ahora después de refrescar, bien. Y si, entonces esta es la entrada y el botón, vamos a mantener HTML muy simple. Bien, tengo botón de entrada, y voy a tener una lista desordenada creada por aquí, que se utilizará para renderizar la lista de tareas. Bien. Entonces voy a llamar a esto como lista de tareas, algo así. ¿Bien? Por aquí, guión bajo etiqueta script, voy a tener SRC, y voy a llamar a esto ya que voy a vincularlo al Índice Gs por aquí Y en la parte superior, puedo tener hoja de estilo por aquí así puedo decir link, RL, voy a decir hoja de estilo. Bien. Y voy a cerrar esto. También voy a mencionar la etiqueta F, y voy a decir estilos punto CSS. Hasta el momento tan bueno. Bien, entonces HTML está hecho. Lo hemos mantenido muy, muy simple. Se puede ver, este es el contenedor de aquí, que está sosteniendo el tipo de entrada y el botón. ¿Bien? Puedo asignarle a esto un ID por aquí para que luego podamos usarlo para el estilo. Puedo decir contenedor de tareas por aquí. Bien. Entonces este es el contin de la tarea por aquí donde estoy teniendo entrada y botón Aquí es donde ocurre toda la acción. Y luego tengo una lista desordenada donde estoy mostrando la lista de ítems o lista de tareas pendientes Esto está hecho. Ahora voy a pasar al Índice GS. ¿Bien? Este es un archivo JavaScript donde vamos a escribir algún código que nos ayudará a darle algo de vida a este HTML. Bien, entonces esto literalmente no hace nada a partir de ahora, ¿bien? Entonces, lo primero que vamos a necesitar es que necesitaremos una forma de almacenar y gestionar nuestra lista de tareas pendientes, ¿verdad? Y también necesitaremos una forma, esencialmente de escuchar este evento. Así que cada vez que el usuario hace clic en la tarea, tenemos que asegurarnos de que la tarea se agregue a la aplicación. Una vez que se agrega la tarea a la aplicación, también tendremos que renderizarla. Bien. Entonces cosas como renderizado, adición de tarea, bien, marcando la tarea como completa, todo esto se gestionará dentro de la propia aplicación. Entonces lo que vamos a hacer es que tendremos un objeto, ¿de acuerdo? Entonces comenzaré por crear un objeto. Diré que haga app por aquí. Bien. Y así es como lo voy a crear. Ahora por aquí, voy a tener una matriz, porque la aplicación puede tener múltiples tareas, ¿verdad? Así que voy a tener una matriz, que va a ser utilizada para almacenar tareas por aquí. Ahora, voy a tener algunos métodos por aquí. Uno está en la tarea, ¿de acuerdo? Entonces este es el primer método por aquí. Bien. Entonces voy a tener otro método, que es toggle task. Esto va a ser usado para alternar. Entonces, si dices que esta tarea está hecha, si haces clic en la tarea, se va a marcar como hecha. Si vuelves a hacer clic, da click sobre él, se va a marcar como no diez. ¿Bien? Así que básicamente está cambiando por aquí Y aquí, esta función o este método va a aceptar index por aquí. Esto está hecho. Voy a tener que quitar las tareas terminadas, ¿de acuerdo? Entonces esto también podemos tener así que puedo decir eliminar las tareas terminadas. Bien. Y, uh voy a tener esto. Bien. Entonces esto nos va a ayudar a eliminar las tareas completadas, ¿de acuerdo? Y voy a tener un método para renderizar tareas por aquí. ¿Bien? Entonces voy a decir tareas de render, algo como esto, y por aquí, así es como va a ser. Todo bien. Entonces esto está hecho. ¿Bien? Así será el objeto. Este objeto tendrá el atributo para tarea para almacenar tarea, y todos los métodos básicamente para administrar tareas, ¿verdad? Ahora, lo que voy a hacer es que voy a decir documento por aquí, pensamiento Vaya, documento tot Voy a decir que obtenga elemento por ID por aquí, y voy a decir en la tarea por aquí. ¿Qué está en la tarea? En la tarea está el botón de aquí. ¿Bien? Se puede ver que esto es un botón. Entonces estamos recibiendo el botón, y en el botón, voy a decir al click por aquí. Bien. Voy a hacer uso de las funciones de flecha, así. Y aquí, voy a tener la lógica de lo que se supone que va a suceder cuando un usuario hace clic en la tarea de aquí. Bien, en el botón, quiero decir, ¿de acuerdo? Entonces aquí, antes que nada, puedo mostrar una alerta. Sólo puedo probar si este oyente está funcionando bien. Debería. Entonces si digo agregar, Bien, no se está mostrando, es porque esto es capital. Lo siento por eso. Bien. Así que aquí se puede ver, hola. Bien, está funcionando bien. Entonces esto se está activando con el clic del botón. Hasta el momento tan bueno. Ahora bien, ¿cuáles son las tareas que tenemos que hacer dentro de este oyente En primer lugar, tenemos que obtener lo que se ingresa en esta tarea. ¿Cómo vamos a conseguir eso? Eso lo conseguiremos de esta entrada. Tenemos esta entrada de tarea de identificación, ¿verdad? Entonces una vez que tengamos el texto que se introduce por aquí, vamos a llamar a la tarea y conseguir que esa tarea se agregue a la matriz de tareas, ¿verdad? Y entonces vamos a restablecer este cuadro de entrada a una cadena vacía porque se borra porque se agrega la tarea, ¿verdad? Entonces lo que voy a hacer es, voy a decir dejar que la tarea entre aquí. Bien, voy a decir documento punto, obtener elemento por ID. Y déjame obtener el aporte de la tarea por aquí. ¿Bien? Entonces voy a decir entrada de tareas. Asegúrese de tener esta referencia de identificación. Esta referencia de ID debe ser la misma que la que has definido aquí en el HTML. Todo bien. Entonces esto está hecho. Esto es cuidar por aquí. Bien. Ahora bien, lo que tengo que hacer aquí es, bien, esto está hecho. Voy a venir aquí. Diré que hacer app dot at task, y voy a decir entrada de tarea, punto, valor. Bien. Entonces lo que estoy haciendo es que estoy diciendo entrada de tareas. Entonces este es el elemento que obtuve, y estoy diciendo valor de punto. Sí. Bien. Y entonces necesito reajustar esto por aquí, este campo por aquí, ¿verdad? Entonces voy a añadir una cadena vacía, algo así. Esto va a despejar el campo de entrada, ¿verdad? Entonces puedo decir prueba en la tarea. Se puede ver que se está limpiando, pero no se está agregando en este momento. ¿Por qué? Porque esta función o este método no tiene literalmente nada. Es un método vacío. ¿Bien? Tenemos que definir todo esto. Aún tenemos que definir todo esto. Todo bien. Entonces ahora lo que voy a hacer es comenzar con el ifstreatment Bien. Si hay una tarea, o puedo si quieres validar, puedes agregar un check por aquí donde compruebes si la tarea existe. O lo que puedes hacer es que de inmediato puedes decir esta tarea de punto, lo siento, este punto tareas dot push Entonces necesitamos empujar o agregar esta tarea en particular a esta tarea de aquí. ¿Bien? Y aquí, voy a decir texto, Colin Bien, entonces esta es la tarea, y voy a decir terminada ¿Está terminado? Diré que se cae. ¿Bien? Algo así. Bien. Y una vez hecho esto, necesito llamar render. Así que este punto render. Algo así. Sea la interfaz de usuario necesita refrescarse, la interfaz de usuario correcta una vez que se agrega la tarea, la lista de la tarea debe refrescarse, y es por eso que estoy llamando a este render de puntos por aquí. Bien, esto está hecho. Así que básicamente preguntar cada tarea individual en esta matriz tiene dos cosas. Una es la tarea misma y si la tarea se marca como completada o no. Hasta el momento tan bueno. Tenemos que alternar ahora las tareas. ¿Bien? Entonces lo que vamos a hacer es decir este punto tareas. Voy a sacar la tarea del índice aquí porque tenemos acceso al índice. Diré punto terminado. Bien. Entonces esto será contrario de si está terminado o no. Voy a decir esto tareas de punto, y voy a decir índice por aquí, punto valor completado. Yo sólo estoy invirtiendo este valor por aquí. Entonces, cualquiera que sea el valor almacenado en el atributo completado de esa tarea en particular, se invierte y se vuelve a asignar. Eso es lo que está pasando. Eso es. Ahora, después de hacer este cambio, necesito renderizar la interfaz, ¿verdad? Así que renderiza la interfaz de usuario por aquí. Voy a decir esto tareas de render de puntos. Algo así. Esto está hecho. Necesito quitar las tareas completadas. Bien. Entonces lo que yo haría es que diría, para que podamos hacer uso del filtro por aquí, ¿verdad? Entonces puedes decir esto tot tareas por aquí. ¿Bien? Y se puede decir esto tareas de punto, tot filtrar por aquí, y voy a decir tarea por aquí, usar la función de flecha, y voy a decir si tarea está terminada. Algo así. Bien. Entonces, cualquiera que sea la tarea que se complete, se eliminará y voy a decir este punto Render tareas, algo así Bien. Ahora bien, ¿cómo renderizarías la tarea, verdad? Entonces para eso, lo que vamos a hacer es que necesitamos renderizar la tarea de aquí en lista de tareas, ¿verdad? Entonces lo que haría es simplemente copiar esto para ahorrar algo de tiempo. Bien. Y por aquí, voy a decir lista de tareas. Bien. Y el ID de aquí es lista de tareas, ¿verdad? Entonces voy a agregar lista de tareas por aquí. Bien. Se agrega la lista de tareas. Ahora lo que tenemos que hacer es Bien. Entonces aquí, voy a tener voy a borrar realmente la lista actual. ¿Bien? Primero, primero, necesitamos borrar la lista actual. Te diré por qué estoy haciendo esto, ¿de acuerdo? Te quedará claro en poco tiempo. HTML es igual. Entonces primero estoy borrando la lista actual porque estamos renderizando la tarea nuevamente, ¿verdad? Entonces, si no borras el HTML interno, si no borras la lista de tareas actual, la lista se duplicará, ¿verdad? Espero que esto tenga sentido. Ahora lo que tenemos que hacer es decir este punto tareas que para cada uno de aquí. Bien. Y dentro de esto, voy a tener una función, y voy a decir índice de tareas. Entonces tarea e índice por aquí es algo que se va a pasar. Bien. Y voy a tener función de flecha. Bien. Y dentro de esto, voy a decir const Li Bien. Y voy a decir documento punto obtener elemento por ID. Lo siento, no voy a ser get element by ID porque no hemos creado LI. Entonces dentro de UL, tendrás elementos LI, ¿verdad? Entonces voy a decir crear elemento por aquí. Diré que crea a Li por aquí. Bien porque quieres renderizarlo como una lista. Y luego voy a decir Litt contenido de texto. Y luego voy a decir tarea punto texto por aquí. Bien. Y luego voy a decir que punto en clic por aquí. Bien, también necesitamos agregar al hacer clic a la lista de aquí porque al hacer clic de eso, la sesión de tareas toggle, así voy a decir esta tarea de alternar punto, y voy a pasar en el índice del click por aquí. Esto está hecho. Bien. Ahora, voy a decir si la tarea está terminada, ya estaremos aquí. Bien. Entonces puedes agregar la lista de clases I'll i dot. Entonces voy a agregar la clase por aquí. Bien, punto agregar. Diré terminado. Estoy agregando una clase a este elemento HTML si la tarea está marcada como completada. ¿Bien? Así que aquí estás agregando clase como ID class por aquí para CSS. Eso es lo que estoy agregando aquí desde el Javascript. Entonces se puede decir elemento punto lista de clases. Estás agregando esto a la lista de clases, terminada. Y entonces podemos tener CSS contra esto. Esto tiene sentido. Y luego por aquí, se puede decir lista de tareas por aquí, tot up y child Algo así. Voy a añadir esto a la interfaz de usuario. Bien. Pongamos a prueba esto. Diré prueba. Se puede ver que la prueba se está renderizando 100. Esto también se está renderizando. Bien. Entonces esto se está renderizando dos veces por aquí. Ahí está esto se rindió dos veces. Entonces hay un problema. ¿Bien? Entonces el problema es que el HTML no se está aclarando por aquí. ¿Bien? Entonces espero que entiendas la importancia de esta declaración de aquí ahora. Esto no está funcionando en realidad. Y se puede ver se vuelve a renderizar toda la lista. Entonces si agrego 200 por aquí, se puede ver prueba, 100, 200. Es re renderizar todo. Bien, siempre que estés agregando la tarea. Entonces no va a ser esto.en HTML. Será taskls dot HTML. Si guardo esto, puedo decir prueba. Se agrega prueba. Si veo 100, sumará 100. Ya puedes ver que está funcionando bien. Todo bien. Ahora, las tareas también se están marcando como completadas, pero lo de finalización tendrás que manejar en CSS porque hay una clase que se está agregando, o por aquí. Si le echas un vistazo a la clase, bien, déjame mostrarte. Entonces aquí estás viendo el Li por aquí. Son 100, ¿verdad? De hecho, da click en este 100. Bien. La clase aún no se está agregando aquí. ¿Bien? Debería agregarse. Así que en realidad al hacer clic de esto, completado debe ser agregado como un nombre de clase por aquí dinámicamente. Pero esto no está pasando. Veamos cuál es el tema. hacer clic, estamos viendo que alternar tareas, y por cada tarea completada, se debe agregar la lista de clases. Esto está bien. Bien, por aquí, veo que esto es mayúscula C. Esto no está bien. Esto debería ser pequeño. Bien. Ahora veamos qué pasa. Entonces aquí no hay tarea por aquí. Déjame agregar una tarea. Voy a añadir prueba. Bien. Tengo una tarea. Si hago clic en él, puedes ver que la clase está terminada para esto. Se puede ver. Ahora bien, si agregas cualquier CSS para la clase completada, puedes agregar el CSS de strike through. Entonces aparecerá como strike through, porque has aplicado ese CSS. Solo hay que decir clase para elementos, teniendo clase esta terminada. Bien, necesitas agregar ese tipo de efecto completado en el CSS. Muy bien, así será manejado. ¿Bien? Entonces la aplicación está casi terminada, ¿de acuerdo? Ya terminamos con la aplicación. Se puede ver que todo se está haciendo. Toda la funcionalidad está funcionando bien. Bien. Ahora nos dirigiremos a CSS, y agregaremos algunos estilos básicos a nuestra aplicación. Todo bien. Ahora comenzaremos con la etiqueta corporal por aquí. ¿Bien? Por supuesto, familia de fuentes, y veremos a Ariel Helveta, Albatica Si esto está bien, bien, texto o línea. Yo diré Cena por aquí. Voy a agregar Vaya, no resolución máxima, sino margen por aquí Diré cero. Bien. Y déjame agregar relleno. Diré 20 píxeles. Bien. Déjame ver y ver qué pasa. Bien, un poco de cambio. Oh, puedes agregar color de fondo o lo que quieras. Voy a añadir es azul. Bien. Se ve un poco azulado. Si quieres algo más, uh, como por aquí. Ver. Tan blanco antiguo. Puedes agregar esto también. Bien. Dependiendo de tu elección, lo que quieras. O pantalla, voy a mantener la pantalla para flexionar por aquí. Bien. Flex dirección es voy a decir columna. Bien. Y luego alinear los elementos, voy a decir centro. Voy a guardar esto. Bien. Esto está hecho. Cada uno. Bien. Entonces a cada uno, solo le asignaré explícitamente un color. Voy a llamar a este color como negro. Bien. Esto está hecho. Todo bien. Ahora, vengamos por aquí. Voy a ver esto. Si vienes por aquí, ahí está este contenedor de tareas. Voy a conseguir este ID de contenedor de tareas por aquí. Bien. Diré hash. Así es como te refieres a cualquier ID de elementos en CSS con la ayuda de hash. Bien. Diré display flex, y necesitamos agregar necesitamos justificar el contenido. Diré centro. Bien. Entonces esto ahora viene en una sola línea, como pueden ver aquí. Y voy a decir margen inferior. Bien. Y esto será de 15 píxeles. Bien. Entonces esta en realidad no es una vista de pantalla completa, pero si te dirigías a la vista de pantalla completa aquí, si me refresco, puedes ver que así es como está apareciendo en este momento, y solo puedo agregar una tarea. Se puede ver. ¿Bien? Entonces sí, así es como se ve ahora mismo, margen inferior. Bien, esto ya está hecho. Puedo agregar un poco de estilo para entrada por aquí. Bien. Voy a decir tipo tipo es igual a texto, algo así, y voy a decir por aquí, relleno de diez píxeles. A ver si esto, bien. Diré ancho por aquí, ancho es de 200 píxeles. Bien. Diré frontera. Bien, el borde puede ser de un píxel. Bien, ya no hay frontera, ya lo ves. Bien. Ahora, una cosa más es, creo que también debería optimizarlo para un tamaño de pantalla más pequeño. Bien. Lo que voy a hacer es agregar media query por aquí, media y decir por aquí. Por lo que será de ancho máximo. Bien, algo como esto, y será tan ancho máximo de 600 pixeles. Bien. Así que voy a añadir un poco de estilo por aquí para lo mismo, ¿verdad? Entonces puedo decir contenedor de tareas hashtag. Bien. Diré dirección flex. Diré columna por aquí para que quede alineada verticalmente cuando básicamente el tamaño de la pantalla sea más pequeño. Entonces la caja de entrada de botón está alineada verticalmente porque no se veía bien, o, horizontalmente, básicamente vista de lado a lado, ¿verdad? Entonces acabo de agregar esto. Entonces está alineado horizontalmente por aquí, lo siento, alineado verticalmente cuando el tamaño de la pantalla es pequeño, pero horizontalmente así si el tamaño de la pantalla es ancho. ¿Bien? Entonces cuando el tamaño de la pantalla es pequeño, este CSS es aplicable. ¿Bien? Incluso puedo agregar CSS para esto por aquí. Bien. Entonces voy a introducir el tipo de texto ancho es relleno no necesito. Me saltaré el relleno. El ancho es del 100% por aquí. Margen por aquí. Entonces voy a decir que el margen es de cinco píxeles y cero. Uh, así. Y puedo decir UL. Entonces la lista desordenada puede ser de ancho, 90%. Algo así. Bien. Entonces esto está hecho. ¿Bien? Esto es para tamaño de pantalla pequeña. Voy a volver por aquí. Bien. Entonces estaba diciendo pólvora de un pixel. Bien. Diré sólido por aquí, y tendré esta frontera por aquí. Esto se ve bien, ahora mismo, ya se puede ver. Se ve bien. ¿Bien? Tenemos que agregar algunas cosas más como radio. Bien, radio de cinco píxeles, por ejemplo. Bien, cinco píxeles se ven decentes en mi opinión si te ahorras esto, ¿verdad? Y voy a añadir margen así margen por aquí, margen de, digamos, diez píxeles. Bien. Esto está hecho, supongo. Todo bien. La entrada está hecha. Ahora vamos a darle estilo al botón por aquí. Entonces, ¿cómo nos estilo botón. Bien. Entonces botón podemos decir, uh, relleno, voy a decir diez píxeles y 15 píxeles por aquí y color de fondo de azul. Bien. Y luego color de blanco. Si guardas esto, puedes ver. Pero el cuerpo no se ve bien, así que border no desactivará ninguno. Bien, la frontera se ha ido. Puedo tener radio fronterizo por aquí. Bien, píxel F, así. Y entonces puedo tener puntero de cursor. Entonces ahora mismo, no se está convirtiendo en un puntero. Pero si pasa el cursor ahora para ver, este cursor se está convirtiendo en un puntero Bien. E incluso puedo agregar botón botón efecto colin hov Bien, entonces voy a decir color de fondo. Es azul oscuro. ¿Bien? Entonces, si se ciernen, va a venir como azul oscuro Straicionero. Ahora, voy a añadir un poco de estilo para la lista aguantada Voy a copiar esto. Bien. Y aquí, vamos a tener ancho como 50%, y voy a decir tipo de estilo de lista como ninguno por aquí. Bien, entonces no quiero que esos puntos vengan. Entonces voy a decir tipo de estilo de lista, ninguno. Eso no se ve bien. Diré relleno como cero. Bien. El ajuste es del 50% y el margen es cero. Auto. Bien, esto está hecho. Y si, creo que esto es todo. Solo necesitamos agregar un CSS para completar. Bien. Entonces voy a decir terminado. Artículo por aquí. Voy a añadir esta tarea, y voy a hacer clic en ella para que esté marcada como completada. Muy bien, entonces voy a decir terminado. Bien. Entonces me refiero a clase terminada como este punto terminado. Así es como te refieres. Diré decoración de texto, así que tengo que pasar por alto, ¿verdad? Así que voy a decir por aquí, línea a través. Eso es lo que es el nombre de la propiedad. Bien, así que ambos consiguen el strike through, supongo que ambos están marcados como completados. Entonces voy a decir prueba. Bien, esto no está terminado, y puedo decir completarlo. Tarea bien. Estas son algunas tareas ficticias que estoy agregando. Si hago clic en esto, verás que esto está terminado. ¿Bien? Si marco esto como completado, verás que esto está terminado. ¿Bien? Entonces esto está funcionando bien. Decoración de texto terminada. Diré color como gris. Bien, algo como esto, esto debería verse decente, sí. Bien. Supongo que esto se ve bien ahora, ¿verdad? Puedo añadir más. Bien, entonces se está sumando la tarea. Bien. Se puede ver. También podemos agregar estilo para cada tarea aquí. Bien. Entonces lo que puedo hacer aquí es después de UL por aquí, puedo agregar LI. Bien. Puedo ver que el estilo para cada tarea podría ser relleno de diez píxeles. Bien. Puedo agregar frontera por aquí, borde de un píxel, sólido, y podría llamarlo como humo blanco. Se puede ver. Bien, esto en realidad no se ve tan bien. Entonces tengo un código de color, TTT. Voy a añadir eso. ¿Bien? Pero esto no es entonces quedar bien en el fondo, si le echas un vistazo, ¿de acuerdo? Entonces lo que puedo hacer es desplazarme hacia arriba por aquí, y voy a cambiar este fondo a hash puedo decir un cuatro, un cuatro, cuatro, algo así. ¿Bien? Tipo de color blanco azulado Esto se ve decente ahora. Bien. Entonces por aquí, necesito agregar radio. No me parece demasiado cuadrado , demasiado cuadrado, ¿verdad? Entonces lo que puedo hacer es agregar un radio de probablemente cinco píxeles. A ver. Bien. Radio de cinco píxeles. Guarde esto. Bien. Y entonces puedo decir margen por aquí. Cinco píxeles y cero por aquí. Esto se ve decente ahora. Se puede ver. Además, si pongo el cursor sobre esto, idealmente, deseo tener el puntero del cursor Diré I Cursor. Puntero. Ya ves que viene un puntero, ¿verdad? Entonces se ve genial ahora. ¿Bien? Al menos decente, diría yo. Bien. Yo solo refrescaré esto y puedes tener tarea predeterminada también agregada por aquí si así lo deseas. Entonces aquí en JavaScript, lo que puedo hacer es puedo agregar puedo llamar al método. Bien, entonces puedo decir todo app dot at task por aquí. La tarea predeterminada es aprender JavaScript. Algo así. Bien. Se puede ver. Entonces se agrega ahora. Siempre que cargues la aplicación, esta sería la tarea predeterminada que se agrega. ¿Bien? Y puedes agregar tarea o aprender C shop, por ejemplo, aprender Java. Bien, puedes marcarlos como completos. Entonces espero que esto sea útil y espero que hayan disfrutado construyendo esta aplicación Studo conmigo usando, por supuesto, Ja Script, HTML y CSS 11. Conclusión del curso: Y eso nos lleva al final de este increíble curso en el que exploramos infinitas posibilidades con funciones de Jascript A lo largo de este curso, profundizamos en el corazón de las funciones de JavaScript, donde exploramos todas las funciones desde lo básico hasta temas más avanzados como parámetros, valores de retorno, expresiones de funciones y funciones de flecha también Incluso nos aventuramos en el mundo de las funciones dentro de los métodos de objetos y matrices, asegurando que tenga una comprensión integral de cómo escribir código modular y eficiente Pero nuestro viaje no se detuvo ahí. También hicimos un par de proyectos prácticos donde vimos en todos los conocimientos o todo lo que hemos aplicación todos los conocimientos o todo lo que hemos ganado en este curso . Y estos proyectos no sólo reforzaron tu aprendizaje sino que además te dotaron de conocimientos prácticos y comprensión. Y estos proyectos son proyectos de este tipo que incluso puedes utilizarlos en tu cartera. Recuerda, el dominio de cualquier habilidad de programación es solo un comienzo El verdadero poder de JavaScript radica en la experimentación y la práctica continuas. Te animo a seguir construyendo, seguir refinando tu código y a seguir haciendo uso de las cosas que has aprendido hoy en día en los proyectos que construyes. Gracias por ser un aprendiz comprometido y entusiasta lo largo de todo este curso Espero que hayas ganado suficiente confianza en tus habilidades de guión laboral y estés emocionado de abordar proyectos aún más desafiantes en el futuro. Con esta clase, tienes un proyecto de clase que encontrarás en la sección de proyectos, cual te animaría a completarlo y compartirlo con toda la clase de ahí. Así que ese es el final de nuestro viaje juntos, codificación feliz, y todo lo mejor.