[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-11314":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":35,"readmeContent":36,"aiSummary":37,"trendingCount":16,"starSnapshotCount":16,"syncStatus":38,"lastSyncTime":39,"discoverSource":40},11314,"hello-javascript","mouredev\u002Fhello-javascript","mouredev","Curso para aprender el lenguaje de programación JavaScript desde cero y para principiantes. +120 lecciones, 14 horas en vídeo y 220 ejercicios.","https:\u002F\u002Fmouredev.link\u002Fjavascript",null,"JavaScript",7959,2010,114,4,0,14,19,132,42,105.41,"Apache License 2.0",false,"main",true,[27,28,29,30,31,32,33,34],"ecmascript","javascript","javascript-vanilla","js","nodejs","tutorial","vanilla-javascript","vanilla-js","2026-06-12 04:00:54","# Hello JavaScript\n\n[![JavaScript](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FJavaScript-ES6+-yellow?style=for-the-badge&logo=javascript&logoColor=white&labelColor=101010)](https:\u002F\u002Fdeveloper.mozilla.org\u002Fes\u002Fdocs\u002FWeb\u002FJavaScript) [![NodeJS](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNODEJS-v20+-green?style=for-the-badge&logo=nodedotjs&logoColor=white&labelColor=101010)](https:\u002F\u002Fnodejs.org\u002F)\n\n## Curso para aprender el lenguaje de programación JavaScript desde cero y para principiantes\n\n![](.\u002FImages\u002Fheader.jpg)\n\n### Proyecto realizado durante emisiones en directo desde [Twitch](https:\u002F\u002Ftwitch.tv\u002Fmouredev)\n> ##### Si consideras útil el curso, apóyalo haciendo \"★ Star\" en el repositorio. ¡Gracias!\n\n## Clases en vídeo\n\n### Curso de fundamentos desde cero\n\n\u003Ca href=\"https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4\">\u003Cimg src=\"http:\u002F\u002Fi3.ytimg.com\u002Fvi\u002F1glVfFxj8a4\u002Fmaxresdefault.jpg\" style=\"height: 50%; width:50%;\"\u002F>\u003C\u002Fa>\n\n* [Introducción](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4)\n* [1 - Contexto](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=174)\n* [2 - Historia](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=322)\n* [3 - JavaScript y Java](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=665)\n* [4 - Utilización](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=931)\n* [5 - Especificación ECMAScript](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=1017)\n* [6 - Motor V8](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=1293)\n* [7 - Referencia](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=1403)\n* [8 - Ejercicios prácticos](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=1621)\n* [9 - Versión](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=1705)\n* [10 - Explorador web](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=1768)\n* [11 - Playground](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=1893)\n* [12 - Instalación](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=1988)\n* [13 - Editor de código](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=2256)\n* [14 - Buenas prácticas](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=2311)\n* [15 - Hola mundo](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=2390) | [Código](.\u002FBasic\u002F00-helloworld.js)\n* [16 - Variables](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=3049) | [Código](.\u002FBasic\u002F01-variables.js)\n* [17 - Tipos de datos](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=3599) | [Código](.\u002FBasic\u002F02-datatypes.js)\n* [18 - Ejercicios: primeros pasos](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=4733) | [Ejercicios](.\u002FBasic\u002F03-beginner-exercises.js)\n* [19 - Operadores](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=4937) | [Código](.\u002FBasic\u002F04-operators.js)\n* [20 - Ejercicios: Operadores](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=6458) | [Ejercicios](.\u002FBasic\u002F05-operators-exercises.js)\n* [21 - Strings](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=6565) | [Código](.\u002FBasic\u002F06-strings.js)\n* [22 - Ejercicios: Strings](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=7226) | [Ejercicios](.\u002FBasic\u002F07-strings-exercises.js)\n* [23 - Condicionales](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=7277) | [Código](.\u002FBasic\u002F08-conditionals.js)\n* [24 - Ejercicios: Condicionales](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=8652) | [Ejercicios](.\u002FBasic\u002F09-conditionals-exercises.js)\n* [25 - Arrays](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=8741) | [Código](.\u002FBasic\u002F10-array.js)\n* [26 - Sets](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=9952) | [Código](.\u002FBasic\u002F11-set.js)\n* [27 - Maps](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=10755) | [Código](.\u002FBasic\u002F12-map.js)\n* [28 - Ejercicios: Estructuras](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=11451) | [Ejercicios](.\u002FBasic\u002F13-structures-exercises.js)\n* [29 - Bucles](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=11575) | [Código](.\u002FBasic\u002F14-loops.js)\n* [30 - Ejercicios: Bucles](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=12732) | [Ejercicios](.\u002FBasic\u002F15-loops-exercises.js)\n* [31 - Funciones](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=12829) | [Código](.\u002FBasic\u002F16-functions.js)\n* [32 - Ejercicios: Funciones](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=14146) | [Ejercicios](.\u002FBasic\u002F17-functions-exercises.js)\n* [33 - Objetos](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=14229) | [Código](.\u002FBasic\u002F18-objects.js)\n* [34 - Ejercicios: Objetos](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=15675) | [Ejercicios](.\u002FBasic\u002F19-objects-exercises.js)\n* [35 - Desestructuración y propagación](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=15747) | [Código](.\u002FBasic\u002F20-destructuring-spreading.js)\n* [36 - Ejercicios: Desestructuración y propagación](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=16802) | [Ejercicios](.\u002FBasic\u002F21-destructuring-spreading-exercises.js)\n* [37 - Clases](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=16864) | [Código](.\u002FBasic\u002F22-classes.js)\n* [38 - Herencia de clases](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=17999) | [Código](.\u002FBasic\u002F22-classes.js)\n* [39 - Ejercicios: Clases](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=18630) | [Ejercicios](.\u002FBasic\u002F23-classes-exercises.js)\n* [40 - Manejo de errores](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=18751) | [Código](.\u002FBasic\u002F24-error-handling.js)\n* [41 - Ejercicios: Manejo de errores](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=20392) | [Ejercicios](.\u002FBasic\u002F25-error-handling-exercises.js)\n* [42 - Console](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=20444) | [Código](.\u002FBasic\u002F26-console-methods.js)\n* [43 - Ejercicios: Console](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=21421) | [Ejercicios](.\u002FBasic\u002F27-console-methods-exercises.js)\n* [44 - Módulos](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=21480) | [Código exportación](.\u002FBasic\u002F28-export-modules.js) | [Código importación](.\u002FBasic\u002F29-import-modules.js) | [Código externos](.\u002FBasic\u002F30-import-external-modules.cjs)\n* [45 - Ejercicios: Módulos](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=22720) | [Ejercicios](.\u002FBasic\u002F31-modules-exercises.js) | [package.json](.\u002FBasic\u002Fpackage.json)\n* [Despedida](https:\u002F\u002Fyoutu.be\u002F1glVfFxj8a4?t=22776)\n\n### Curso de fundamentos intermedio (continuación del desde cero)\n\n\u003Ca href=\"https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E\">\u003Cimg src=\"http:\u002F\u002Fi3.ytimg.com\u002Fvi\u002FiJvLAZ8MJ2E\u002Fmaxresdefault.jpg\" style=\"height: 50%; width:50%;\"\u002F>\u003C\u002Fa>\n\n* [Introducción](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E)\n* [1 - Primeros pasos](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=279)\n\nFunciones avanzadas | [Código](.\u002FIntermediate\u002F00-advanced-functions.js)\n\n* [2 - Ciudadanos de primera clase](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=346)\n* [3 - Arrow functions](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=782)\n* [4 - IIFE](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=1278)\n* [5 - Parámetros rest](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=1873)\n* [6 - Operador Spread](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=2126)\n* [7 - Closures](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=2356)\n* [8 - Recursividad](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=2650)\n* [9 - Funciones parciales](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=3013)\n* [10 - Currying](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=3473)\n* [11 - Callbacks](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=3675)\n* [12 - Ejercicios: Funciones avanzadas](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=4112) | [Ejercicios](.\u002FIntermediate\u002F01-advanced-functions-exercises.js)\n\nEstructuras avanzadas | [Código](.\u002FIntermediate\u002F02-advanced-structures.js)\n\n* [13 - Estructuras avanzadas](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=4355)\n* [14 - Arrays avanzados: métodos funcionales](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=4411)\n* [15 - Arrays avanzados: manipulación](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=5244)\n* [16 - Arrays avanzados: ordenación](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=5621)\n* [17 - Arrays avanzados: búsqueda](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=5979)\n* [18 - Sets avanzados: operaciones](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=6288)\n* [19 - Sets avanzados: conversión](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=6949)\n* [20 - Sets avanzados: iteración](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=6992)\n* [21 - Maps avanzados: iteración](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=7061)\n* [22 - Maps avanzados: conversión](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=7207)\n* [23 - Ejercicios: Estructuras avanzadas](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=7514) | [Ejercicios](.\u002FIntermediate\u002F03-advanced-structures-exercises.js)\n\nObjetos y clases avanzados | [Código Objetos](.\u002FIntermediate\u002F04-advanced-objects.js) | [Código Clases](.\u002FIntermediate\u002F05-advanced-classes.js)\n\n* [24 - Objetos avanzados](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=7639)\n* [25 - Prototipos](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=7695)\n* [26 - Herencia](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=8068)\n* [27 - Métodos estáticos y de instancia](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=8577)\n* [28 - Métodos avanzados](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=8896)\n* [29 - Clases avanzadas](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=9096)\n* [30 - Abstracción](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=9408)\n* [31 - Polimorfismo](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=9694)\n* [32 - Mixins](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=9956)\n* [33 - Singleton](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=10454)\n* [34 - Symbol](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=10901)\n* [35 - instanceof](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=11264)\n* [36 - create](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=11331)\n* [37 - Proxy](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=11375)\n* [38 - Ejercicios: Objetos y clases avanzados](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=11832) | [Ejercicios](.\u002FIntermediate\u002F06-advanced-objects-classes-exercises)\n\nAsincronía | [Código](.\u002FIntermediate\u002F07-async.js)\n\n* [39 - Asincronía](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=11890)\n* [40 - Código síncrono](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=12245)\n* [41 - Event Loop](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=12366)\n* [42 - Callbacks](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=12729)\n* [43 - Promesas](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=13349)\n* [44 - Async\u002FAwait](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=14171)\n* [45 - Ejercicios: Asincronía](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=14558) | [Ejercicios](.\u002FIntermediate\u002F08-async-exercises.js)\n\nAPIs | [Código](.\u002FIntermediate\u002F09-apis.js)\n\n* [46 - APIs](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=14777)\n* [47 - API REST](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=14973)\n* [48 - Métodos HTTP](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=15134)\n* [49 - Códigos de respuesta HTTP](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=15294)\n* [50 - GET](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=15477)\n* [51 - Async\u002FAwait en APIs](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=16400)\n* [52 - POST](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=16626)\n* [53 - Herramientas para realizar peticiones HTTP](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=17088)\n* [54 - Manejo de errores](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=17325)\n* [55 - Métodos HTTP adicionales](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=17619)\n* [56 - Autenticación mediante API Key](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=17770)\n* [57 - Otros métodos de autenticación y autorización](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=18244)\n* [58 - Versionado de APIs](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=18323)\n* [59 - Otras APIs](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=18441)\n* [60 - Ejercicios: APIs](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=18710) | [Ejercicios](.\u002FIntermediate\u002F10-apis-exercises.js)\n\nDOM | [Código](.\u002FIntermediate\u002F11-dom.js)\n\n* [61 - DOM](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=18822)\n* [62 - Estructura del DOM](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=19105)\n* [63 - Métodos de selección](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=19172)\n* [64 - Manipulación de elementos](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=19792)\n* [65 - Modificación de atributos](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=19996)\n* [66 - Interacción con clases CSS](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=20326)\n* [67 - Creación y eliminación de elementos](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=20787)\n* [68 - Elementos y eventos del DOM](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=21377)\n* [69 - Ejemplos: acceso al DOM](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=21754) | Ejemplo simple: [HTML](.\u002FIntermediate\u002F12-dom-example.html) - [JS](.\u002FIntermediate\u002F13-dom-example.js)\n* [70 - Ejemplos: lista de tareas](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=22342) Ejemplo lista de tareas: [HTML](.\u002FIntermediate\u002F14-tasklist.html) - [JS](.\u002FIntermediate\u002F15-tasklist.js)\n* [71 - Ejercicios: DOM](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=23010) | [Ejercicios](.\u002FIntermediate\u002F16-dom-exercises.js)\n\nDepuración | [Código](.\u002FIntermediate\u002F17-debugging.js)\n\n* [72 - Depuración](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=23085)\n* [73 - Depurador](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=23370)\n* [74 - Ejercicios: Depuración](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=24329) | [Ejercicios](.\u002FIntermediate\u002F18-debugging-exercises.js)\n\nRegex | [Código](.\u002FIntermediate\u002F19-regex.js)\n\n* [75 - Regex](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=24363)\n* [76 - Sintaxis: test](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=24444)\n* [77 - Sintaxis: replace](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=24989)\n* [78 - Sintaxis: exec](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=25365)\n* [79 - Ejercicios: Regex](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=25888) | [Ejercicios](.\u002FIntermediate\u002F20-regex-exercises.js)\n\nTesting | [Código](.\u002FIntermediate\u002F21-testing.js) | [Test](.\u002FIntermediate\u002F22-testing.test.js)\n\n* [80 - Testing](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=25938)\n* [81 - Jest](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=26272)\n* [82 - Ejercicios: Testing](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=26946) | [Ejercicios](.\u002FIntermediate\u002F23-testing-exercises.js)\n* [Despedida](https:\u002F\u002Fyoutu.be\u002FiJvLAZ8MJ2E?t=26970)\n\n## Enlaces de interés\n\n* Impacto: [Stack Overflow](https:\u002F\u002Fsurvey.stackoverflow.co\u002F2023\u002F#most-popular-technologies-language) | [GitHub](https:\u002F\u002Fgithub.blog\u002F2023-11-08-the-state-of-open-source-and-ai\u002F) | [Índice TIOBE](https:\u002F\u002Fwww.tiobe.com\u002Ftiobe-index\u002F) | [Google Trends](https:\u002F\u002Ftrends.google.es\u002Ftrends\u002Fexplore?cat=5&date=today%205-y&q=%2Fm%2F02p97,%2Fm%2F05z1_,%2Fm%2F07sbkfb&hl=es)\n* [Historia](https:\u002F\u002Fes.wikipedia.org\u002Fwiki\u002FJavaScript)\n* [Especificación ECMAScript](https:\u002F\u002Ftc39.es\u002Fecma262\u002F)\n* [Documentación Mozilla](https:\u002F\u002Fdeveloper.mozilla.org\u002Fes\u002Fdocs\u002FWeb\u002FJavaScript)\n* [Documentación W3Schools](https:\u002F\u002Fwww.w3schools.com\u002Fjs\u002F)\n* [Documentación JS Info](https:\u002F\u002Fes.javascript.info\u002F)\n* [Libro Eloquent JavaScript](https:\u002F\u002Feloquentjavascript.net\u002F)\n* [Playground](https:\u002F\u002Frunjs.app\u002Fplay)\n* [Node.js](https:\u002F\u002Fnodejs.org)\n* Exploradores: [Chrome](https:\u002F\u002Fwww.google.com\u002Fintl\u002Fes_es\u002Fchrome\u002F) | [Brave](https:\u002F\u002Fbrave.com\u002Fdownload\u002F)\n* [Visual Studio Code](https:\u002F\u002Fcode.visualstudio.com\u002F)\n* [Guía de estilo](https:\u002F\u002Fgoogle.github.io\u002Fstyleguide\u002Fjsguide.html)\n* Clientes HTTP: [Postman](https:\u002F\u002Fpostman.com) | [Apidog](https:\u002F\u002Fapidog.com) | [Thunder Client](https:\u002F\u002Fthunderclient.com)\n* APIs: [JSONPlaceholder](https:\u002F\u002Fjsonplaceholder.typicode.com) | [OpenWeather](https:\u002F\u002Fopenweathermap.org) | [PokéAPI](https:\u002F\u002Fpokeapi.co)\n* Expresiones regulares: [Documentación](https:\u002F\u002Fdeveloper.mozilla.org\u002Fes\u002Fdocs\u002FWeb\u002FJavaScript\u002FGuide\u002FRegular_expressions\u002FCheatsheet\n) | [Regex101](https:\u002F\u002Fregex101.com\u002F)\n* [Jest](https:\u002F\u002Fjestjs.io\u002F)\n\n## Únete al campus de programación de la comunidad\n\n![https:\u002F\u002Fmouredev.pro](.\u002FImages\u002Fpro.jpg)\n\n#### Te presento [mouredev pro](https:\u002F\u002Fmouredev.pro), mi proyecto más importante para ayudarte a estudiar programación y desarrollo de software de manera diferente.\n\n> **¿Buscas un extra?** Aquí encontrarás este y otros cursos editados por lecciones individuales, para avanzar a tu ritmo y guardar el progreso. También dispondrás de ejercicios y correcciones, test para validar tus conocimientos, examen y certificado público de finalización, soporte, foro de estudiantes, reunionnes grupales, cursos exclusivos y mucho más.\n> \n> Entra en **[mouredev.pro](https:\u002F\u002Fmouredev.pro)** y utiliza el cupón **\"JAVASCRIPT\"** con un 15% de descuento en tu primera suscripción.\n\n## Preguntas frecuentes\n\n#### ¿Debo tener conocimientos previos?\nMi idea es que el curso sea desde cero y para principiantes. Pensado para una persona que comienza por primera vez a programar. Es un curso de fundamentos, donde nos centraremos en aprender las bases del lenguaje con JavaScript puro (Vanilla JS). Esto no es un curso para aprender a desarrollar proyectos. Vamos a empezar desde el principio.\n\nSi la acogida de la comunidad es buena, seguiré creando cursos más avanzados.\n\n#### ¿Este curso se va a subir a YouTube?\n\nSí, una vez finalizados, todos los cursos son editados y subidos en bloque a YouTube.\n\n#### ¿Existe algún lugar donde consultar dudas?\nHe creado un canal llamado \"JavaScript\" en el [servidor de Discord](https:\u002F\u002Fdiscord.gg\u002Fmouredev) de la comunidad. Allí puedes consultar dudas y ayudar al resto de miembros. Así nos beneficiamos tod@s.\n\n#### ¿Cómo puedo practicar?\nEn cada lección encontrarás ejercicios para poner en práctica lo aprendido. También puedes realizar los ejercicios de mi web [retosdeprogramacion.com](https:\u002F\u002Fretosdeprogramacion.com).\n\n## ![https:\u002F\u002Fmouredev.com](https:\u002F\u002Fraw.githubusercontent.com\u002Fmouredev\u002Fmouredev\u002Fmaster\u002Fmouredev_emote.png) Hola, mi nombre es Brais Moure.\n### Freelance full-stack iOS & Android engineer\n\n[![YouTube Channel Subscribers](https:\u002F\u002Fimg.shields.io\u002Fyoutube\u002Fchannel\u002Fsubscribers\u002FUCxPD7bsocoAMq8Dj18kmGyQ?style=social)](https:\u002F\u002Fyoutube.com\u002Fmouredevapps?sub_confirmation=1)\n[![Twitch Status](https:\u002F\u002Fimg.shields.io\u002Ftwitch\u002Fstatus\u002Fmouredev?style=social)](https:\u002F\u002Ftwitch.com\u002Fmouredev)\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F729672926432985098?style=social&label=Discord&logo=discord)](https:\u002F\u002Fmouredev.com\u002Fdiscord)\n[![Twitter Follow](https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Ffollow\u002Fmouredev?style=social)](https:\u002F\u002Ftwitter.com\u002Fmouredev)\n![GitHub Followers](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Ffollowers\u002Fmouredev?style=social)\n![GitHub Followers](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fmouredev?style=social)\n\nSoy ingeniero de software desde 2010. Desde 2018 combino mi trabajo desarrollando Apps con la creación de contenido formativo sobre programación y tecnología en diferentes redes sociales como **[@mouredev](https:\u002F\u002Fmoure.dev)**.\n\nSi quieres unirte a nuestra comunidad de desarrollo, aprender programación, mejorar tus habilidades y ayudar a la continuidad del proyecto, puedes encontrarnos en:\n\n[![Twitch](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTwitch-Programación_en_directo-9146FF?style=for-the-badge&logo=twitch&logoColor=white&labelColor=101010)](https:\u002F\u002Ftwitch.tv\u002Fmouredev)\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-Servidor_de_la_comunidad-5865F2?style=for-the-badge&logo=discord&logoColor=white&labelColor=101010)](https:\u002F\u002Fmouredev.com\u002Fdiscord) [![Pro](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCursos-mouredev.pro-FF5500?style=for-the-badge&logo=gnometerminal&logoColor=white&labelColor=101010)](https:\u002F\u002Fmouredev.pro)\n[![Link](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLinks_de_interés-moure.dev-14a1f0?style=for-the-badge&logo=Linktree&logoColor=white&labelColor=101010)](https:\u002F\u002Fmoure.dev) [![Web](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGitHub-MoureDev-087ec4?style=for-the-badge&logo=github&logoColor=white&labelColor=101010)](https:\u002F\u002Fgithub.com\u002Fmouredev)\n","Hello JavaScript 是一个面向初学者的JavaScript编程语言学习课程。该项目提供了超过120课时的教学内容，包括14小时的视频教程和220个练习题，覆盖了从基础概念到高级特性的全面讲解，支持ES6+标准，并使用NodeJS v20+环境进行开发实践。适合完全没有编程背景或希望系统性提升JavaScript技能的学习者，在个人自学、在线教育以及编程入门培训等多种场景下均可应用。",2,"2026-06-11 03:31:37","top_topic"]