Aprende JavaScript
Un curso de JavaScript online, gratis e interactivo. Escribes JS en cada lección, con pistas de IA cuando te trabes y un certificado al terminar.
257,728+ codders inscritos
- Apto para principiantes
Ayuda de codificación con IA
Lecciones interactivas prácticas
Narración de audio en cada lección
Cuestionarios para poner a prueba tu conocimiento
Certificado gratuito de finalización
Programa
Sección 1
Fundamentos
Empezar secciónEmpezarExpandirContraerConstruye una base sólida con conceptos esenciales y habilidades básicasIntroducción
4 lecciones223- 01El lenguajeReto
- 02¡Hola, mundo!RetoQuiz
- 03ComentariosQuiz
- 04Estructura del códigoQuiz
Variables
7 lecciones1247- 01NúmerosRetoMaestríaQuiz
- 02StringRetoMaestríaQuiz
- 03BooleanRetoMaestríaQuiz
- 04Convenciones de nomenclaturaRetoMaestríaQuiz
- 05Variables vacíasRetoQuiz
- 06Resumen - Inicializar variablesReto
- 07ConstantesRetoMaestríaQuiz
Operadores Parte 1
6 lecciones1037- 01Operadores aritméticosRetoMaestríaQuiz
- 02Operador móduloRetoMaestríaQuiz
- 03Atajos aritméticosRetoMaestríaQuiz
- 04Operadores de comparaciónRetoMaestríaQuiz
- 05Igualdad estricta vs. débilRetoQuiz
- 06Resumen - Matemáticas simplesReto
Operadores Parte 2
5 lecciones831- 01Operadores lógicos Parte 1RetoMaestríaQuiz
- 02Operadores lógicos Parte 2RetoMaestríaQuiz
- 03Repaso - Lógica simpleReto
- 04Operadores lógicos Parte 3RetoMaestríaQuiz
- 05Coerción de tiposRetoQuiz
Toma de decisiones
5 lecciones729- 01Sentencia IfRetoMaestríaQuiz
- 02If - ElseRetoMaestríaQuiz
- 03Repaso - Calculadora simpleReto
- 04If - Else anidadosRetoQuiz
- 05Sentencia SwitchRetoQuiz
E/S Básica
6 lecciones931- 01SalidaRetoMaestríaQuiz
- 02Salida con variablesRetoMaestríaQuiz
- 03Conversión de tipos - Parte 1RetoMaestríaQuiz
- 04Conversión de tipos - Parte 2RetoQuiz
- 05Resumen - Hasta 120Reto
- 06Resumen - Verdadero o FalsoReto
Calculadora para dividir la cuenta
Proyecto4 lecciones1- 01Mensaje de bienvenidaReto
- 02Cálculo de la propina y el totalProyecto
- 03Dividir la cuentaProyecto
- 04Salida con formatoProyecto
Bucles
7 lecciones1345- 01Bucle ForRetoMaestríaQuiz
- 02Bucle WhileRetoMaestríaQuiz
- 03BreakRetoMaestríaQuiz
- 04ContinueRetoMaestríaQuiz
- 05Repaso - FactorialReto
- 06Bucle Do WhileRetoMaestríaQuiz
- 07Bucle anidadoRetoMaestríaQuiz
Funciones
8 lecciones1250- 01Declarar una funciónRetoMaestríaQuiz
- 02ArgumentosRetoMaestríaQuiz
- 03RetornoRetoMaestríaQuiz
- 04Repaso - Función SigmaReto
- 05Expresión de funciónRetoMaestríaQuiz
- 06Parámetros por defectoQuiz
- 07Funciones de flechaRetoMaestríaQuiz
- 08Repaso - Función de validaciónReto
FizzBuzz con un giro
Proyecto4 lecciones1- 01Descripción general del juegoReto
- 02La función FizzBuzzProyecto
- 03Iterando los númerosProyecto
- 04Añadiendo el giroProyecto
Arrays Parte 1
6 lecciones1037- 01Declarar un ArrayRetoMaestríaQuiz
- 02Acceder a elementos de un ArrayRetoMaestríaQuiz
- 03Modificar ArraysRetoQuiz
- 04Métodos de Array Parte 1RetoMaestríaQuiz
- 05Métodos de Array Parte 2RetoMaestríaQuiz
- 06Resumen - Procesador de ArraysReto
Arrays Parte 2
8 lecciones1254- 01Iterar sobre ArraysRetoQuiz
- 02El método forEachRetoQuiz
- 03Bucle for...ofRetoMaestríaQuiz
- 04Resumen - Contador PReto
- 05Slicing de ArraysRetoMaestríaQuiz
- 06Métodos de Arrays Parte 3RetoMaestríaQuiz
- 07Métodos de Arrays Parte 4RetoMaestríaQuiz
- 08Comprobación de pertenenciaRetoQuiz
Rastreador de lista de compras
Proyecto4 lecciones1- 01Descripción general del proyectoReto
- 02Añadir elementoProyecto
- 03Eliminar elementoProyecto
- 04Ver listaProyecto
Desafíos finales
3 lecciones37- 01Pirámide de númerosRetoQuiz
- 02Duplicar los imparesReto
- 03Qué comprarReto
Sección 2
Lógica y Flujo
Empezar secciónEmpezarExpandirContraerDesarrolla habilidades de resolución de problemas y crea programas dinámicos e interactivosStrings en profundidad
5 lecciones630- 01Fundamentos de stringsQuiz
- 02Iterar sobre stringsRetoMaestríaQuiz
- 03Template LiteralsRetoQuiz
- 04Métodos de stringsRetoMaestríaQuiz
- 05Resumen - String WeaverReto
Arreglos multidimensionales
9 lecciones1452- 01Conceptos básicos de arreglos 2DQuiz
- 02Acceso a elementos de arreglos 2DRetoMaestríaQuiz
- 03Bucles anidados con arreglos 2DRetoMaestríaQuiz
- 04Resumen - Arreglos 2DReto
- 05Suma y resta de matricesRetoMaestríaQuiz
- 06Arreglos irregulares (Jagged Arrays)RetoMaestríaQuiz
- 07Arreglos 3D y más alláRetoMaestríaQuiz
- 08Patrones comunes en arreglos 2DRetoMaestríaQuiz
- 09Resumen - Todo sobre arreglosReto
JSON Parte 1
7 lecciones944- 01¿Qué es un JSON?Quiz
- 02Comprobar si existe una claveRetoMaestríaQuiz
- 03Métodos de objetoRetoMaestríaQuiz
- 04El Spread Operator Parte 1Quiz
- 05El Spread Operator Parte 2RetoMaestríaQuiz
- 06Eliminar clavesRetoMaestríaQuiz
- 07Resumen - Manipular claves de JSONReto
JSON Parte 2
6 lecciones530- 01Iterar sobre JSONRetoQuiz
- 02JSON anidadoRetoQuiz
- 03Encadenamiento opcional en JSONQuiz
- 04Copia superficial y profundaRetoQuiz
- 05Resumen - Tienda de bicicletasReto
- 06Resumen - Sistema solarReto
Conjuntos Parte 1
8 lecciones749- 01¿Qué es un conjunto?RetoQuiz
- 02Iterar sobre conjuntosQuiz
- 03Añadir un elementoRetoQuiz
- 04Eliminar un elementoRetoQuiz
- 05Comprobar si un elemento existeRetoQuiz
- 06Tamaño y Is EmptyRetoQuiz
- 07Copy y ClearRetoQuiz
- 08Resumen - Conceptos básicos de conjuntosReto
Conjuntos Parte 2
6 lecciones637- 01Matemáticas - Unión de conjuntosRetoQuiz
- 02Matemáticas - Intersección de conjuntosRetoQuiz
- 03Matemáticas - Diferencia de conjuntosRetoQuiz
- 04Matemáticas - Diferencia simétricaRetoQuiz
- 05Subconjuntos y superconjuntosRetoQuiz
- 06Repaso - Agrupar amigosReto
Sistema de Gestión de Biblioteca
Proyecto5 lecciones1- 01Descripción general del proyectoReto
- 02Añadir librosProyecto
- 03Buscar por títuloProyecto
- 04Filtrar por géneroProyecto
- 05Marcar como leídoProyecto
Temas interesantes de Arrays
4 lecciones422- 01Desestructuración de ArraysRetoQuiz
- 02Sintaxis Spread en ArraysRetoQuiz
- 03Arrays dispersosRetoQuiz
- 04Resumen - Taller de ArraysReto
Métodos avanzados de Arrays
9 lecciones761- 01Los métodos Join y SplitQuiz
- 02El método MapRetoMaestríaQuiz
- 03El método FilterRetoQuiz
- 04El método ReduceRetoQuiz
- 05Encadenamiento de métodos de ArraysRetoQuiz
- 06¿Son iguales ForEach y Map?Quiz
- 07El método SortRetoQuiz
- 08Los métodos Find y FindIndexQuiz
- 09Resumen - El maestro del encadenamientoReto
Gestionar el sistema del festival
Proyecto6 lecciones1- 01Descripción general del proyectoReto
- 02Añadir películas y sedesProyecto
- 03Añadir proyeccionesProyecto
- 04Comprar entradasProyecto
- 05Calificar películasProyecto
- 06Cancelar proyeccionesProyecto
Sección 3
Introducción a TypeScriptPágina propia
Empezar secciónEmpezarExpandirContraerIntroducción a TypeScript después de haber aprendido sobre JavaScriptPrimeros pasos con TS
5 lecciones232- 01¿Qué es TypeScript?Quiz
- 02¿Por qué usar TypeScript?Quiz
- 03Tu primer código en TypeScriptRetoQuiz
- 04Proceso de compilación y erroresQuiz
- 05Resumen: Introducción a TSReto
Tipos principales
7 lecciones748- 01Tipos básicos: str, num, booleanRetoQuiz
- 02El tipo 'any': Vía de escapeRetoQuiz
- 03El tipo 'unknown'RetoQuiz
- 04Trabajando con 'null' y 'undef'RetoQuiz
- 05Inferencia de tipos en acciónRetoQuiz
- 06Anotaciones de tipo explícitasRetoQuiz
- 07Resumen: Práctica de tipos principalesReto
Estructura de datos: Arrays y Tuplas
9 lecciones862- 01Arrays tipadosRetoQuiz
- 02Modificador 'readonly' para ArraysRetoQuiz
- 03¿Qué es una Tupla?Quiz
- 04Declaración y acceso a TuplasRetoQuiz
- 05Desestructuración de TuplasRetoQuiz
- 06Tuplas ReadonlyRetoQuiz
- 07Arrays tipados multidimensionalesRetoQuiz
- 08Operador Spread con ArraysRetoQuiz
- 09Resumen: Arrays y TuplasReto
Trabajando con funciones
8 lecciones855- 01Tipado de parámetros y valores de retornoRetoQuiz
- 02Tipado de funciones de flechaRetoQuiz
- 03El tipo de retorno 'void'RetoQuiz
- 04Parámetros opcionales con '?'RetoQuiz
- 05Valores de parámetros por defectoRetoQuiz
- 06Tipado de parámetros restRetoQuiz
- 07Definición de tipos de funcionesRetoQuiz
- 08Repaso: Construcción de funciones tipadasReto
Tipos: Alias, Uniones e Intersecciones
7 lecciones751- 01Alias de tipos para primitivosRetoQuiz
- 02Tipos de unión ('|')RetoQuiz
- 03Trabajando con tipos de uniónRetoQuiz
- 04Tipos literalesRetoQuiz
- 05Tipos de intersección ('&')RetoQuiz
- 06Combinando alias de tiposRetoQuiz
- 07Repaso: Combinaciones de tipos avanzadasReto
Tipado de Objetos e Interfaces
8 lecciones757- 01Anotaciones de tipo de objeto en líneaRetoQuiz
- 02Alias de tipo para objetosRetoQuiz
- 03Introducción a las interfacesRetoQuiz
- 04Interfaces vs. Alias de tipoQuiz
- 05Propiedades opcionales y ReadonlyRetoQuiz
- 06Extensión de interfaces y tiposRetoQuiz
- 07Agregar métodos a interfacesRetoQuiz
- 08Repaso: Definición de estructuras de objetosReto
Proyecto: Una lista de tareas simple
Proyecto6 lecciones18- 01Proyecto: Definir la estructura TaskRetoQuiz
- 02Función para agregar una tareaProyecto
- 03Función para cambiar el estado de la tareaProyecto
- 04Función: Listar tareas por estadoProyecto
- 05Función: Imprimir resumen de tareasProyecto
- 06Poniéndolo todo juntoProyecto
Enums
6 lecciones638- 01¿Qué es un Enum numérico?RetoQuiz
- 02Uso de Enums numéricosRetoQuiz
- 03¿Qué es un Enum de string?RetoQuiz
- 04Uso de Enums de stringRetoQuiz
- 05Enums heterogéneosRetoQuiz
- 06Resumen: Uso de EnumsReto
Genéricos: Un primer vistazo
6 lecciones537- 01El problema que resuelven los genéricosQuiz
- 02Creación de una función de identidad genéricaRetoQuiz
- 03Uso de una función genéricaRetoQuiz
- 04Arrays genéricosRetoQuiz
- 05Interfaces genéricasRetoQuiz
- 06Repaso: Práctica de funciones genéricasReto
Proyecto: Gestión de inventario
Proyecto5 lecciones18- 01Proyecto: Ítem de inventario genéricoRetoQuiz
- 02Función: Agregar ítems al inventarioProyecto
- 03Función para buscar un ítem por IDProyecto
- 04Crear un tipo de inventario específicoProyecto
- 05Función para obtener detalles del ítemProyecto
Temas avanzados
6 lecciones642- 01Aserciones de tipoRetoQuiz
- 02Guardas de tipo: in & instanceofRetoQuiz
- 03El tipo 'never'RetoQuiz
- 04Tipos anulables ('strictNull')RetoQuiz
- 05Firmas de índice para objetosRetoQuiz
- 06Resumen: Ajuste de tiposReto
Sección 4
Programación Orientada a Objetos
Empezar secciónEmpezarExpandirContraerDescubre cómo organizar el código con clases, objetos y estructuras reutilizablesObjetos y la palabra clave this
6 lecciones642- 01Repaso rápido: ObjetosRetoQuiz
- 02Agregar métodos a los objetosRetoQuiz
- 03Entendiendo la palabra clave thisRetoQuiz
- 04Funciones constructorasRetoQuiz
- 05La palabra clave newRetoQuiz
- 06Desafío de repasoReto
Organización del código
4 lecciones434- 01¿Qué son los módulos?RetoQuiz
- 02Exportar con exportRetoQuiz
- 03Importar con importRetoQuiz
- 04Exportaciones por defecto vs. nombradasRetoQuiz
Clases y Objetos
4 lecciones426- 01¿Qué es una Clase?RetoQuiz
- 02Crear InstanciasRetoQuiz
- 03Propiedades y MétodosRetoQuiz
- 04Desafío de RepasoReto
Métodos y gestión de estado
2 lecciones218- 01Métodos que modifican el estadoRetoQuiz
- 02Patrón de encadenamiento de métodosRetoQuiz
Encapsulamiento y Acceso
4 lecciones426- 01EncapsulamientoRetoQuiz
- 02Campos de clase públicos y privadosRetoQuiz
- 03Métodos privadosRetoQuiz
- 04Desafío de repasoReto
Proyecto: Una cuenta bancaria simple
Proyecto3 lecciones1- 01Clase BankAccountReto
- 02Depósitos y retirosProyecto
- 03Saldo como campo privadoProyecto
Herencia y la palabra clave extends
6 lecciones645- 01HerenciaRetoQuiz
- 02La relación "es-un"RetoQuiz
- 03La palabra clave extendsRetoQuiz
- 04El método super()RetoQuiz
- 05Heredar propiedades y métodosRetoQuiz
- 06Desafío de repasoReto
Organización del código OOP
1 lección19- 01Organizar clases en módulosRetoQuiz
Métodos y propiedades estáticos
4 lecciones425- 01Nivel de clase vs. Nivel de instanciaRetoQuiz
- 02Propiedades estáticasRetoQuiz
- 03Métodos de utilidad estáticosRetoQuiz
- 04Desafío de repasoReto
Polimorfismo
4 lecciones425- 01¿Qué es el polimorfismo?RetoQuiz
- 02Sobrescribir métodos heredadosRetoQuiz
- 03Uso de superRetoQuiz
- 04Desafío de repasoReto
Proyecto: Un renderizador de figuras
Proyecto4 lecciones1- 01Configuración: Clase Figura y exportaciónReto
- 02Herencia de la clase CírculoProyecto
- 03Sobrescritura y método de áreaProyecto
- 04Contador de figuras estáticoProyecto
Getters y Setters
4 lecciones426- 01Las palabras clave get y setRetoQuiz
- 02Propiedades computadasRetoQuiz
- 03Validación y efectos secundariosRetoQuiz
- 04Desafío de repasoReto
Composición vs. Herencia
3 lecciones328- 01La relación "tiene-un" vs. "es-un"RetoQuiz
- 02Los límites de la herencia profundaRetoQuiz
- 03Construcción de objetosRetoQuiz
Sistema de Gestión de Biblioteca
Proyecto3 lecciones1- 01Diseño de la BibliotecaReto
- 02Clase Libro con ComposiciónProyecto
- 03Validación del Autor del LibroProyecto
Desafíos finales
4 lecciones4- 01Creador de personajes de videojuegosReto
- 02Sistema de productos de E-commerceReto
- 03Sistema de gestión universitariaReto
- 04Sistema de dispositivos para el hogar inteligenteReto
Cursos de JavaScript
Cursos prácticos de JavaScript, gratis para empezar en tu navegador.
Desafíos para principiantes - Practica conceptos básicos
PopularPon a prueba tus conocimientos básicos de programación e intenta resolver estos desafíos; usa cualquier lenguaje que quieras. ¡Feliz programación!
Certificado al completar
- 20
- 20
Problemas de programación
PopularPon a prueba tus habilidades de resolución de problemas de programación con los ejercicios de diferentes niveles de dificultad de este curso. Diseñado para programadores con conocimientos previos de la sintaxis básica en cualquier lenguaje de programación.
Certificado al completar
- 32
- 31
Problemas de programación: Volumen 2
Pon a prueba tus habilidades de resolución de problemas de programación con los ejercicios de diferentes niveles de dificultad de este curso. Diseñado para programadores con conocimientos previos de la sintaxis básica en cualquier lenguaje de programación, este curso es una extensión del primer volumen de Problemas de programación.
Certificado al completar
- 25
- 24
Pila - Serie de Estructuras de Datos #1
En este curso, aprenderás sobre la estructura de datos Pila, crearás una Pila desde cero usando tu lenguaje preferido y practicarás desafíos de programación con ella.
- 13
- 6
- 1
Heaps y Colas de Prioridad - Serie de Estructuras de Datos #7
NuevoEn este curso, aprenderás sobre la estructura de datos Heap (la base de las colas de prioridad), crearás un MinHeap desde cero usando tu lenguaje preferido y practicarás desafíos de programación con él.
Certificado al completar
- 14
- 6
- 1
Bootcamp de patrones de estrellas
Pon a prueba tus habilidades de resolución de problemas de programación para aprender a imprimir patrones de estrellas que van desde lo simple hasta lo complejo, involucrando diferentes niveles de bucles anidados, sentencias condicionales y cálculos matemáticos.
- 30
- 28
Por qué aprender JavaScript con Coddy
- Ejecuta JavaScript al instante en tu navegador. Sin instalar Node.js, sin configurar un IDE. El editor y la salida están lado a lado, así el ciclo de feedback de JavaScript es corto.
- JavaScript moderno: sintaxis ES6+, arrow functions, promises, async/await, destructuring, módulos - el JavaScript que escribirías en el trabajo, no patrones del pasado.
- Las pistas de IA te ayudan a depurar un ejercicio sin revelarte la solución, así construyes el modelo mental que hace más fácil escribir código JS después.
- Certificado gratis de finalización para compartir en LinkedIn o añadir al CV como prueba de que completaste un curso interactivo de JavaScript.