Fundamentos de JavaScript

Introducción y contexto

1. ¿Qué es JavaScript y cuáles son sus principales usos en la web?

Javascript es un lenguaje de programación usado para hacer páginas web dinámicas e interactivas, permitiendo que la pagina reaccione a las acciones de los usuarios. Sus principales usos en la web son los siguientes:

  • Permite validar formularios.
  • Permite modificar y actualizar el HTML y CSS de una página en tiempo real.
  • Puede calcular, manipular y validar datos
  • Puede enviar y recibir datos de un servidor en segundo plano sin recargar toda la página
Logo de JavaScript

2. ¿En qué año y con qué propósito se creó JavaScript?

JavaScript fue creado por Brendan Eich en el año de 1995 con el nombre de LiveScript. Después fue nombrado JavaScript debido a que en ese entonces el lenguaje de programación Java era muy famoso y se aprovecharon de eso.

El propósito era resolver una limitación que tenian las paginas de ese momento: las páginas eran completamente estáticas. Netscape buscaba un lenguaje de programación para que los desarrolladores pudieran hacer las páginas web más interactivas y dinámicas, ejecutando código directamente en el navegador del usuario.

Creado de JavaScript: Brendan_Eich Antiguo Navegador Netscape

3. ¿Por qué JavaScript no es lo mismo que Java?

Java y JavaScript son herramientas muy diferentes. Java destaca en el desarrollo empresarial y en sistemas críticos, mientras que JavaScript es esencial en la web moderna. A continuación una tabla sobre sus principales diferencias:

Lenguaje Ejecución Tipado Ámbito de uso Paradigma
Java Es un lenguaje compilado. El código fuente se compila en un "bytecode" que luego se ejecuta en la Máquina Virtual de Java. Estático y fuertemente tipado. Ampliamente utilizado en aplicaciones empresariales, sistemas backend y desarrollo móvil con Android. Lenguaje de Progrmacion Orienda a Objetos
JavaScript Es un lenguaje interpretado. El código es ejecutado directamente por el navegador web. Dinámico y débilmente tipado. Domina en el desarrollo web y aplicaciones frontend. Principalmente orientado a eventos.

4. ¿Cómo se complementa JavaScript con HTML y CSS?

HTML (HyperText Markup Language): Es el esqueleto o la estructura de la página web. Define el contenido y su organización. Sin HTML, no habría nada para ver en la web.

CSS (Cascading Style Sheets): Es el diseño o la apariencia. Se encarga de la presentación visual del contenido creado con HTML. CSS define los colores, fuentes, espaciado, fondos y el diseño de la página.

JavaScript: Es el comportamiento o la funcionalidad. Es el que añade dinamismo e interactividad. Permite que la página reaccione a las acciones del usuario.

Fundamentos del lenguaje

5. ¿Cuál es la sintaxis básica de JavaScript y cómo se escriben comentarios?

Antes de pasar a ver bloques de codigo recordemos que es la sintaxis y los comentarios:

Sintaxis:

Se refiere al conjunto de reglas que definen la estructura y el orden de los elementos en un lenguaje. En JavaScript y en los otros lenguajes Incluye variables, operadores y sentencias.


                        //  -- Sintaxis Basica de JavaScript --

                        // Declaración de una variable:
                        let saludo = "Hola, mundo";

                        // Declaración de una constante:
                        const PI = 3.1416;

                        // Declaración de una función:
                        function sumar(a, b) {
                            return a + b;
                        }

                        // Llamada a la función y almacenamiento del resultado:
                        let resultado = sumar(5, 10);

                        // Uso de un condicional:
                        if (resultado > 10) {
                            // Mostrar datos en una consola
                            console.log("El resultado es mayor que 10"); 
                        }
                    

Comentarios:

Los comentarios son anotaciones en el código que el navegador ignora. Son útiles para explicar qué hace el código. En JavaScript ecisten dos formas de comentar codigo:

  • Comentario de una línea: Comienza con //.
  • Comentario multilínea: Comienza con /* y termina con */.

Ejemplo de Sintaxis y Comentarios


                        // Esta es una forma de comentar en una sola linea

                        /* 
                            Esto es un comentario multilínea.
                            Util por si quieres hacer diversas anotaciones.
                        */

                    

6. ¿Qué diferencias hay entre var, let y const?

var, let y const son las 3 formas para declarar variables en js. A continuacion una tabla con sus principales diferencias

Característica var let const
Scope (Alcance) Global o de Funcion De Bloque { } De Bloque { }
Reasignación Se puede reasignar. Se puede reasignar. No se puede reasignare
Declaración Se puede redeclarar en el mismo alcance. No se puede redeclarar en el mismo alcance. No se puede redeclarar en el mismo alcance.
Hoisting Se eleva al inicio de su alcance, pero su valor inicial es undefined. Se eleva, pero no se inicializa. Se eleva, pero no se inicializa.
Uso Obsoleto Variables que pueden cambiar su valor. Variables constantes

7. ¿Cuáles son los tipos de datos primitivos en JavaScript? Da un ejemplo de cada uno.

Los tipos de datos primitivos son los datos más básicos e inmutables (no pueden ser alterados). En JavaScript, son los siguientes:

  • String: Una secuencia de caracteres. Se escribe entre comillas.
    let nombre = "Ana";
  • Number: Un valor numérico, ya sea entero o con decimales.
    let edad = 25;
    let precio = 19.99;
  • BigInt: Para representar números enteros de un tamaño mayor Number.
    const numeroGrande = 1234567890123456789012345678901234567890n;
  • Boolean: Representa un valor lógico: true o false.
    let esMayorDeEdad = true;
    let esHombre = false;
  • Undefined: Una variable que ha sido declarada pero no se le ha asignado un valor.
    let direccion;
  • Null: Representa la ausencia de cualquier valor.
    let variableNull = null;
  • Symbol: Un valor único e inmutable. Se utiliza para crear identificadores únicos para las propiedades de los objetos.
    let idUnico = Symbol("id");

8. ¿Qué diferencia hay entre un array y un objeto en JavaScript?

Ambos son usados para almacenar colecciones de datos, pero su estructura y uso son diferentes.

Array (Arreglo)

Un array es una lista ordenada de valores. Se accede a sus elementos a través de un índice numérico (empezando desde 0 para JavaScript).


                        // Un array de strings
                        let frutas = ["manzana", "banana", "cereza"];
                        console.log(frutas[1]); // -> Muestra "banana"
                        
                        // Un array de numeros
                        let numeros = [100, 200, 234];
                        console.log(numeros[3]); // -> Esta mal 
                        console.log(numeros[2]); // -> Esta bien. Muestra 234 
                    

Objeto

Un objeto es una colección desordenada de pares clave-valor. Se accede a sus valores a través de sus claves (propiedades).


                        // Un objeto que describe a una persona
                        let persona = {
                            nombre: "Carlos",
                            edad: 30,
                            esEstudiante: false
                        };

                        // Acceder al valor de la propiedad "nombre"
                        console.log(persona.nombre); // -> Muestra "Carlos"
                        console.log(persona.edad); // -> Muestra 30
                        console.log(persona.esEstudiante); // -> false                        
                    

9. ¿Qué son y cómo se usan los operadores aritméticos, lógicos y relacionales?

Operadores Aritméticos

Se usan para realizar operaciones matemáticas.

Operador Descripción Ejemplo
+ Suma 5 + 3 // 8
- Resta 5 - 3 // 2
* Multiplicación 5 * 3 // 15
/ División 15 / 3 // 5
% Módulo 10 % 3 // 1
++ Incremento let x = 5; x++; // x es 6
-- Decremento let y = 5; y--; // y es 4

Operadores Lógicos

Se usan para combinar o negar expresiones booleanas (true/false).

Operador Descripción Ejemplo
&& AND - Devuelve true si ambos operandos son true (5 > 3) && (10 > 5)
|| OR - Devuelve true si al menos un operando es true (5 > 10) || (10 > 5)
! NOT - Invierte el valor booleano !(5 > 3) // false

Operadores Relacionales o de Comparación

Se usan para comparar dos valores y devuelven un resultado booleano.

Operador Descripción Ejemplo
== Igual a (compara valor) 5 == "5" // true
=== Estrictamente igual a (compara valor y tipo) 5 === "5" // false
!= Distinto de (compara valor) 5 != "5" // false
!== Estrictamente distinto de (compara valor y tipo) 5 !== "5" // true
> Mayor que 10 > 5 // true
< Menor que 10 < 5 // false
>= Mayor o igual que 10 >= 10 // true
<= Menor o igual que 10 <= 5 // false

Control de flujo

10. ¿Cómo funcionan las sentencias condicionales if, else y switch?

Las sentencias condicionales permiten ejecutar diferentes bloques de código basándose en si una condición es verdadera o falsa, o en el valor de una expresión.

Sentencia if

La sentencia if ejecuta un bloque de código si la condición especificada es verdadera (true).


                        let edad = 20;
                        if (edad >= 18) {
                            console.log("Puedes votar.");
                        }
                        if (edad < 18 && edad > 0) {
                            console.log("Eres menor.");
                        }
                    

Sentencia if...else

Extiende if, proporcionando un bloque de código alternativo a ejecutar si la condición del if es falsa.


                        let saldo = 500;
                        if (saldo > 0) {
                            console.log("Tienes fondos disponibles.");
                        } else {
                            console.log("Tu saldo es cero o negativo.");
                        }    
                    

Sentencia if...else if...else

Permite encadenar múltiples condiciones. Se evalúan secuencialmente, y el primer bloque cuya condición sea verdadera se ejecutará.


                        let calificacion = 85;
                        if (calificacion >= 90) {
                            console.log("Tienes una calificacion excelente");
                        } else if (calificacion >= 80) {
                            console.log(Tu calificaion es muy buena");
                        } else if (calificacion >= 70) {
                            console.log("Tu calificacion es buena");
                        } else {
                            console.log("Estas reprobado necesita mejorar");
                        }
                    

Sentencia switch

Se utiliza para realizar diferentes acciones basadas en diferentes condiciones de una única expresión. Es util para evitar anidar muchos if...else haciendo el codigo mas limpio.


                        let diaSemana = "Miércoles";
                        switch (diaSemana) {
                        case "Lunes":
                            console.log("Es el primer día laboral.");
                            break;
                        case "Miércoles":
                            console.log("Mitad de semana.");
                            break;
                        case "Viernes":
                            console.log("¡Casi es fin de semana!");
                            break;
                        default: // -> Nos ayuda en caso de que nuestra condiicion no entre en los otros casos. Es como el else
                            console.log("Día no reconocido.");
                        }
                    

11. ¿Cuáles son las diferencias entre los bucles for, while y do...while?

Los bucles permiten ejecutar un bloque de código repetidamente mientras se cumpla una condición específica. La elección del bucle depende de el número de iteraciones y si se debe garantizar al menos una ejecución.

Bucle for

Ideal cuando sabes exactamente cuántas veces quieres que se repita el bucle. Consiste en una inicialización, una condición de continuación y una expresión de actualización.


                        for (let i = 0; i < 5; i++) {
                            console.log(i); // -> Imprime los numros del 1 al 4 de menor a mayor
                        }
                        for (let i = 5; i < 0; i--) {
                            console.log(i); // -> Imprime los numros del 1 al 4 de mayor a menor
                        }
                    

Bucle while

Se ejecuta mientras una condición sea verdadera. El bloque de código puede no ejecutarse nunca si la condición es falsa desde el principio.


                        let contador = 0;
                        while (contador < 3) {
                            console.log("Contador: " + contador); // Contador: 0, Contador: 1, Contador: 2
                            contador++;
                        }
                    

Bucle do...while

Similar al bucle while, pero garantiza que el bloque de código se ejecute al menos una vez, antes de verificar la condición.


                        let num = 0;
                        do {
                            console.log("El número es: " + num);
                            num++;
                        } while (num < 0);
                    

12. ¿Para qué sirven las palabras clave break y continue?

break y continue son palabras muy imporantes que permiten controlar el flujo de ejecución dentro de los bucles.

break

Se utiliza para salir inmediatamente de un bucle (for, while, do...while) o de una sentencia switch. El control del programa pasa a la sentencia que sigue al bucle o switch.


                        for (let i = 0; i < 10; i++) {
                            if (i === 5) {
                                console.log("i es igual a 5. Saliendo del bucle...");
                                break;
                            }
                            console.log(i);
                        }
                    

continue

Se utiliza para saltar la iteración actual de un bucle y continuar con la siguiente iteración. El código restante dentro del bloque del bucle para esa iteración específica es ignorado.


                        for (let i = 0; i < 5; i++) {
                            if (i === 2) {
                                console.log("Saltando la iteración 2...");
                                continue;
                            }
                            console.log("Número: " + i); // -> El continue hara que no se imprima el 2
                        }
                    

Funciones

13. ¿Cómo se declara una función y cómo se llama en JavaScript?

Una función es un bloque de código reutilizable diseñado para realizar una tarea específica. Se declara una vez y se puede ejecutar muchas veces.

1. Declaración de Función

La forma mas comun de declarar una función es con la palabra clave function, seguida del nombre de la función, una lista de parámetros entre paréntesis y el bloque de código entre llaves.


                        // Recibe dos parámetros: el precio base y el porcentaje de impuesto.
                        function calcularTotal(precioBase, impuesto) {
                            let total = precioBase * (1 + impuesto);
                            return total;
                        }

                        let precioFinal = calcularTotal(100, 0.16);

                        console.log("El precio final es: " + precioFinal);
                    

2. Expresión de Función

Una función también puede ser definida como una expresión y asignada a una variable. La función puede ser anónima (sin nombre).


                        const generarSaludo = function(usuario) {
                            return `¡Bienvenido, ${usuario.nombre}! Tu nivel es ${usuario.nivel}.`;
                        };

                        const usuarioActivo = {
                            nombre: "Ana",
                            nivel: 5
                        };

                        let saludo = generarSaludo(usuarioActivo);

                        console.log(saludo); // -> Muestra el saludo
                    

La principal diferencia es que las declaraciones de función son "elevadas", lo que significa que pueden ser llamadas antes de ser declaradas en el código. Las expresiones de función no.

14. ¿Qué significa que una función tenga parámetros y un valor de retorno?

Los parámetros y los valores de retorno hacen que las funciones puedan procesar datos de entrada y producir resultados.

Parámetros

Los parámetros son variables que se listan en la definición de una función. Actúan como "contenedores" para los valores que la función recibe cuando es llamada. Los valores reales que se pasan a la función se llaman argumentos.


                        // "nombre" y "edad" son parámetros
                        function presentar(nombre, edad) {
                            console.log(`Hola, mi nombre es ${nombre} y tengo ${edad} años.`);
                        }

                        // "Ana" y 30 son argumentos
                        presentar("Ana", 30);
                    

Valor de Retorno

Una función puede "devolver" un valor al código que la llamó usando la palabra return. Cuando se ejecuta return, la función termina inmediatamente y el valor especificado se envía como resultado.


                        function sumar(a, b) {
                            return a + b; // Devuelve el resultado de la suma
                        }

                        let resultado = sumar(8, 5);

                        console.log(resultado);
                    

Si una función no tiene una sentencia return, devuelve undefined por defecto.

15. ¿Qué son las funciones flecha (=>) y qué ventajas tienen?

Las funciones flecha son una forma más concisa de escribir expresiones de función, introducidas en ES6. Utilizan el operador =>.

Sintaxis


                        // Función tradicional
                        const multiplicar = function(a, b) {
                            return a * b;
                        };

                        // Función flecha (forma larga)
                        const multiplicarConFlechaLarga = (a, b) => {
                            return a * b;
                        };

                        // Función flecha (forma corta) el return ya esta implicito
                        const multiplicarConFlechaCorta = (a, b) => a * b;

                        // Si solo hay un parámetro, los paréntesis son opcionales
                        const cuadrado = x => x * x;

                        console.log(cuadrado(5));
                    

Ventajas Principales

  • Sintaxis más corta y legible: Reduce la cantidad de código necesario, especialmente para funciones simples.
  • No tiene su propio `this`: A diferencia de las funciones tradicionales, las funciones flecha no crean su propio contexto this. En su lugar, heredan el this del ámbito que las contiene. Esto es extremadamente útil en callbacks y manejo de eventos, ya que evita la necesidad de usar .bind(this) o guardar this en una variable (const self = this;).

16. ¿Qué es el scope en JavaScript y cómo afecta a las variables?

El scope determina la accesibilidad y visibilidad de las variables en diferentes partes del código durante el tiempo de ejecución.

1. Scope Global

Una variable declarada fuera de cualquier función o bloque tiene scope global. Puede ser accedida desde cualquier lugar del programa.


                        let variableGlobal = "Soy accesible en todas partes";

                        function mostrarVariable() {
                            console.log(variableGlobal);
                        }

                        mostrarVariable(); // Muestra "Soy accesible en todas partes"
                    

Es una buena práctica minimizar el uso de variables globales para evitar conflictos y errores.

2. Scope de Función

Las variables declaradas con var dentro de una función solo son accesibles dentro de esa función. No pueden ser accedidas desde fuera.


                        function miFuncion() {
                        var variableDeFuncion = "Solo visible aquí dentro";
                            console.log(variableDeFuncion);
                        }

                        miFuncion(); // Muestra "Solo visible aquí dentro"
                        console.log(variableDeFuncion); // Error: variableDeFuncion is not defined
                    

3. Scope de Bloque

Introducido con let y const en ES6. Una variable declarada con let o const dentro de un bloque (delimitado por llaves { }, como en un if, for o simplemente un bloque) solo es accesible dentro de ese bloque.


                        if (true) {
                            let variableDeBloque = "Solo visible en este bloque if";
                            const constanteDeBloque = "También solo visible aquí";
                            console.log(variableDeBloque);
                        }

                        console.log(variableDeBloque); // Error: variableDeBloque is not defined
                        console.log(constanteDeBloque); // Error: constanteDeBloque is not defined
                    

El scope de bloque es más predecible y ayuda a prevenir errores comunes que ocurrían con el scope de función de var, por lo que se recomienda usar let y const.

Objetos y colecciones

17. ¿Cómo se declara un objeto y cómo se accede a sus propiedades?

Un objeto en JavaScript es una colección de datos relacionados y/o funcionalidades, que consisten en pares de clave-valor llamados propiedades.

Declaración de un Objeto

La forma más común y recomendada de declarar un objeto es usando la notación literal de objeto (llaves {}).


                        // Declaración de un objeto llamado "coche"
                        let coche = {
                            // Propiedades del objeto (clave: valor)
                            marca: "Toyota",
                            modelo: "Corolla",
                            año: 2022,
                            estaEncendido: false,
                            coloresDisponibles: ["rojo", "blanco", "negro"]
                        };
                    

Acceso a las Propiedades

Puedes acceder a los valores de las propiedades de un objeto de dos maneras:

1. Notación de Punto: Es la forma más común y fácil de leer. Se usa el nombre del objeto seguido de un punto y el nombre de la propiedad.


                        console.log(coche.marca);
                        console.log(coche.año);
                    

2. Notación de Corchetes: Es más flexible. Se usa el nombre del objeto seguido de corchetes que contienen el nombre de la propiedad como una cadena de texto. Es útil cuando el nombre de la propiedad es dinámico (está en una variable) o contiene caracteres especiales (como espacios).


                        console.log(coche["modelo"]);

                        // Ejemplo con una variable
                        let propiedadAConsultar = "marca";
                        console.log(coche[propiedadAConsultar]);
                    

18. ¿Qué diferencia hay entre una propiedad y un método en un objeto?

Aunque ambos son parte de un objeto, su propósito es diferente: las propiedades almacenan datos, mientras que los métodos realizan acciones.

Propiedad

Una propiedad es un par clave-valor que almacena un dato o valor (como un string, número, booleano, array, u otro objeto).

Método

Un método es una propiedad cuyo valor es una función. Los métodos definen el comportamiento o las acciones que un objeto puede realizar. A menudo, un método opera sobre los datos del propio objeto utilizando la palabra clave this.

Ejemplo


                        let usuario = {
                            // PROPIEDADES (almacenan datos)
                            nombre: "Elena",
                            puntos: 100,
                            
                            // MÉTODO (realiza una acción)
                            saludar: function() {
                                console.log(`¡Hola, mi nombre es ${this.nombre}!`);
                            },

                            incrementarPuntos: function() {
                                this.puntos++;
                                console.log(`Ahora tengo ${this.puntos} puntos.`);
                            }
                        };

                        // Accediendo a una propiedad
                        console.log(usuario.nombre);

                        // Llamando a un método
                        usuario.saludar(); 
                        usuario.incrementarPuntos();
                    

19. Menciona al menos 3 métodos básicos de los arrays (push, pop, map, etc.) y explica cómo funcionan.

Los arrays en JavaScript vienen con muchos métodos incorporados que facilitan la manipulación de sus elementos.

1. push() - Añadir al Final

El método push() añade uno o más elementos al final de un array y devuelve la nueva longitud del array. Este método modifica el array original.


                        let colores = ["rojo", "verde"];
                        console.log("Original:", colores); // Muestra: ["rojo", "verde"]

                        let nuevaLongitud = colores.push("azul");

                        console.log("Modificado:", colores); // Muestra: ["rojo", "verde", "azul"]
                        console.log("Nueva longitud:", nuevaLongitud); // Muestra: 3
                    

2. pop() - Eliminar del Final

El método pop() elimina el último elemento de un array y devuelve ese elemento eliminado. Este método también modifica el array original.


                        let frutas = ["manzana", "banana", "cereza"];
                        console.log("Original:", frutas); // Muestra: ["manzana", "banana", "cereza"]

                        let frutaEliminada = frutas.pop();

                        console.log("Modificado:", frutas); // Muestra: ["manzana", "banana"]
                        console.log("Elemento eliminado:", frutaEliminada); // Muestra: "cereza"
                    

3. map() - Crear un Nuevo Array Transformado

El método map() crea un nuevo array con los resultados de llamar a una función proporcionada en cada uno de los elementos del array original. Es ideal para transformar datos. Este método no modifica el array original.


                        let numeros = [1, 2, 3, 4, 5];
                        console.log("Original:", numeros); // Muestra: [1, 2, 3, 4, 5]

                        // La función se ejecuta por cada número y devuelve su doble
                        let dobles = numeros.map(function(numero) {
                            return numero * 2;
                        });

                        console.log("Nuevo array (dobles):", dobles); // Muestra: [2, 4, 6, 8, 10]
                        console.log("El original no cambió:", numeros); // Muestra: [1, 2, 3, 4, 5]
                    

Otros temas básicos

20. ¿Qué es el DOM y por qué es importante en el uso de JavaScript en páginas web?

El DOM (Document Object Model), o Modelo de Objetos del Documento, es una interfaz de programación para los documentos HTML. El navegador crea una representación de la página web en forma de un árbol de objetos, donde cada etiqueta HTML, atributo y texto se convierte en un "nodo" en el árbol.

En términos simples: el DOM es la forma en que JavaScript "ve" y entiende la estructura de una página HTML.

¿Por qué es importante?

El DOM es fundamental porque proporciona a JavaScript el poder de interactuar y manipular una página web de forma dinámica. Sin el DOM, JavaScript no podría:

  • Leer y cambiar el contenido de un elemento (por ejemplo, actualizar un texto).
  • Modificar la estructura de la página (añadir o eliminar etiquetas HTML).
  • Cambiar los estilos CSS de un elemento (cambiar su color, tamaño, etc.).
  • Reaccionar a eventos del usuario (como clics o pulsaciones de teclas).

Es la conexión que permite que JavaScript haga que las páginas web sean interactivas en lugar de estáticas.


                        <!-- Archivo HTML -->
                        <h1 id="titulo">Título Original</h1>

                        <!-- Script de JavaScript -->
                        <script>
                            // 1. Seleccionar un elemento del DOM usando su ID
                            const miTitulo = document.getElementById("titulo");

                            // 2. Manipular el elemento: cambiar su contenido de texto
                            miTitulo.textContent = "Titulo cambiado";
                        </script>
                    

21. ¿Qué es un evento en JavaScript y menciona al menos 3 ejemplos comunes?

Un evento es una acción o suceso que ocurre en la página web, y para el cual el navegador nos puede notificar para que podamos ejecutar un código en respuesta. Estos eventos pueden ser generados por el usuario (como hacer clic o mover el ratón) o por el propio navegador (como cuando la página termina de cargar).

JavaScript nos permite "escuchar" (listen) estos eventos y ejecutar funciones (llamadas "manejadores de eventos" o "event handlers") cuando ocurren.

Ejemplos comunes de eventos:

  1. click: Se dispara cuando el usuario hace clic con el ratón sobre un elemento. Es el evento más utilizado para botones, enlaces, etc.
  2. mouseover: Ocurre cuando el puntero del ratón se mueve sobre un elemento. Útil para mostrar información adicional o cambiar estilos al pasar el ratón.
  3. keydown: Se activa cuando el usuario presiona una tecla del teclado. Es fundamental para crear atajos de teclado o validar la entrada en formularios en tiempo real.

Ejemplo de cómo usar un evento:


                        <!-- En HTML -->
                        <button id="miBoton">Haz clic aquí</button>

                        <!-- En JavaScript -->
                        <script>
                            const boton = document.getElementById("miBoton");

                            // Añadimos un "escuchador de eventos" para el evento 'click'
                            boton.addEventListener('click', function() {
                                alert("Click hecho");
                            });
                        </script>
                    

22. ¿Cuál es la diferencia entre alert, prompt y console.log?

Son tres formas de mostrar información, pero tienen propósitos y comportamientos muy diferentes, especialmente en cómo interactúan con el usuario y el desarrollador.

Función Propósito Comportamiento Devuelve un valor
alert() Mostrar un mensaje simple al usuario en una ventana emergente. Bloqueante. Detiene la ejecución de todo el código hasta que el usuario presiona "Aceptar". No (devuelve undefined).
prompt() Solicitar al usuario que introduzca un dato de texto en una ventana emergente. Bloqueante. Detiene la ejecución hasta que el usuario introduce texto y presiona "Aceptar" o "Cancelar". Sí. Devuelve el texto introducido o null si se presiona "Cancelar".
console.log() Imprimir información en la consola del navegador. Es la herramienta principal para depuración (debugging) para los desarrolladores. No bloqueante. El código continúa ejecutándose sin interrupción. Es invisible para el usuario final. No (devuelve undefined).

23. ¿Cómo se abre la consola del navegador y qué ventajas tiene usarla para depurar código?

Cómo abrir la consola

La consola es parte de las "Herramientas para Desarrolladores" (DevTools) de cualquier navegador moderno. Puedes abrirla de varias maneras:

  • Atajo de teclado: Presiona F12. También son comunes Ctrl+Shift+I (en Windows/Linux) o Cmd+Option+I (en Mac).
  • Menú del navegador: Generalmente se encuentra en el menú bajo "Más herramientas" > "Herramientas para desarrolladores".
  • Clic derecho: Haz clic derecho en cualquier parte de la página y selecciona "Inspeccionar". Luego, ve a la pestaña "Consola".

Ventajas de usarla para depurar

La consola es una herramienta indispensable para cualquier desarrollador de JavaScript por varias razones:

  1. Visualización de mensajes: Permite ver la salida de console.log(), lo que te ayuda a rastrear el valor de las variables en diferentes puntos de la ejecución de tu código.
  2. Reporte de errores: Muestra errores de JavaScript en tiempo real, indicando el tipo de error, una descripción y la línea exacta del código donde ocurrió. Esto es crucial para identificar y solucionar problemas.
  3. Ejecución de código en vivo: Puedes escribir y ejecutar código JavaScript directamente en la consola para probar funciones, verificar el valor de variables globales o manipular el DOM en tiempo real sin tener que recargar la página.
  4. Inspección de objetos y arrays: Permite imprimir objetos y arrays de forma interactiva, pudiendo expandirlos para ver todas sus propiedades y valores de manera clara.