Volver a flashcards

Flashcards con solución de JavaScript

¿Cuál es la función principal de JavaScript en una aplicación web en relación con HTML y CSS?

JavaScript decide el comportamiento dinámico, las reglas y el estado de la interfaz.

En el desarrollo web, ¿qué capa se encarga de definir la estructura y el significado del contenido?

La capa de HTML define la estructura y semántica base.

En el desarrollo web, ¿qué lenguaje se encarga de la presentación, el diseño y los estados visuales?

El lenguaje CSS es el responsable de la presentación y el estilo.

Explique el modelo de 'Entrada, Proceso y Salida' en el contexto de JavaScript.

Se refiere a la recepción de un evento del usuario, la ejecución de la lógica de negocio y la actualización del feedback visual.

¿Qué es ECMAScript en relación con JavaScript?

Es el estándar que define las especificaciones del lenguaje JavaScript.

¿Cuál es la diferencia fundamental entre el uso de `let` y `const` para declarar variables?

`let` permite la reasignación de valores, mientras que `const` crea una referencia cuya asignación no puede cambiar.

¿Qué sucede con una variable declarada con `var` debido al concepto de 'hoisting'?

La declaración se eleva al principio de su contexto de ejecución, permitiendo su uso antes de la línea de declaración con valor `undefined`.

¿Qué es la 'Zona Temporal Muerta' (Temporal Dead Zone) en JavaScript?

Es el periodo entre el inicio del bloque y la declaración de una variable `let` o `const` donde no se puede acceder a ella.

Mencione los siete tipos de datos primitivos en JavaScript.

String, Number, BigInt, Boolean, Undefined, Null y Symbol.

¿Qué valor devuelve el operador `typeof` cuando se aplica al valor `null`?

Devuelve el string `"object"`, lo cual es un error histórico del lenguaje.

¿Para qué se utiliza el tipo de dato `BigInt`?

Se utiliza para representar números enteros con precisión arbitraria que exceden el límite de $2^{53} - 1$.

¿Cuál es la diferencia entre el operador de igualdad `==` y el de igualdad estricta `===`?

`==` realiza conversión de tipos antes de comparar, mientras que `===` compara tanto el valor como el tipo sin conversión.

¿Qué resultado devuelve la expresión `5 % 2` en JavaScript?

Devuelve `1`, que es el resto de la división de 5 entre 2.

En una operación lógica con `&&` (AND), ¿qué sucede si el primer operando es 'falsy'?

La operación se interrumpe (cortocircuito) y devuelve el valor del primer operando.

¿Cómo funciona el operador de coalescencia nula `??`?

Devuelve el operando de la derecha solo si el de la izquierda es `null` o `undefined`.

¿Qué sintaxis se utiliza para las 'plantillas literales' (template literals) que permiten interpolar variables?

Se utilizan las comillas invertidas (backticks) y la sintaxis `${variable}`.

¿Qué permite hacer el encadenamiento opcional `?.` en el acceso a propiedades de objetos?

Permite leer propiedades anidadas sin causar un error si una referencia intermedia es `null` o `undefined`.

¿Cuál es la estructura básica de un operador ternario?

Consiste en una condición seguida de `?`, la expresión si es verdadera, `:`, y la expresión si es falsa.

¿Para qué sirve la instrucción `break` dentro de un bucle?

Sirve para terminar inmediatamente la ejecución del bucle y saltar a la siguiente instrucción fuera de él.

¿Cuál es la diferencia entre los bucles `while` y `do...while`?

`while` evalúa la condición antes de ejecutar el bloque, mientras que `do...while` ejecuta el bloque al menos una vez antes de evaluar la condición.

¿Qué recorre específicamente el bucle `for...in`?

Recorre las propiedades enumerables de un objeto.

¿Qué recorre específicamente el bucle `for...of`?

Recorre los valores de un objeto iterable, como un Array o un String.

¿Cómo se define una función de flecha (arrow function) básica que suma dos parámetros?

Se define como `(a, b) => a + b`.

¿Qué es un 'cierre' (closure) en JavaScript?

Es una función que guarda el acceso a las variables de su ámbito léxico incluso después de que la función externa haya finalizado.

¿Qué hace el operador 'rest' (`...`) cuando se usa en los parámetros de una función?

Agrupa el resto de los argumentos pasados a la función en un solo array.

¿Cuál es la función del método `map()` en un array?

Crea un nuevo array con los resultados de aplicar una función a cada elemento del array original.

¿Cuál es la función del método `filter()` en un array?

Crea un nuevo array con todos los elementos que cumplen una condición implementada por una función.

¿Qué utilidad tiene el método `reduce()` en las colecciones indexadas?

Ejecuta una función reductora sobre cada elemento para devolver un único valor acumulado.

¿Qué permite hacer la 'desestructuración' de objetos?

Permite extraer propiedades de un objeto y asignarlas a variables de forma concisa.

¿Qué hace el operador 'spread' (`...`) al aplicarse a un array en una nueva declaración?

Expande los elementos del array, permitiendo realizar copias superficiales o fusiones con otros arrays.

¿Qué diferencia a un objeto `Set` de un `Array` estándar?

Un `Set` es una colección de valores únicos donde no se permiten duplicados.

¿Qué es un objeto `Map` en JavaScript?

Es una colección de pares clave-valor donde cualquier valor (objetos o primitivos) puede ser usado como clave.

¿Para qué se utiliza el bloque `finally` en una estructura `try...catch`?

Para ejecutar código que debe correr siempre, independientemente de si se produjo un error o no.

Defina el concepto de 'Promesa' en JavaScript.

Es un objeto que representa la eventual terminación o el fracaso de una operación asíncrona.

¿Cuáles son los tres estados posibles de una Promesa?

Pendiente (pending), cumplida (fulfilled) y rechazada (rejected).

¿Qué ventaja ofrece la sintaxis `async/await` sobre el uso de `.then()`?

Permite escribir código asíncrono con una estructura que parece síncrona, facilitando la lectura y el mantenimiento.

¿Qué devuelve siempre una función declarada con la palabra clave `async`?

Devuelve siempre una Promesa.

¿Qué hace el método `fetch()` en el entorno del navegador?

Inicia una petición HTTP a un servidor y devuelve una Promesa que resuelve la respuesta.

¿Qué representa el DOM (Document Object Model)?

Es una interfaz de programación que representa el documento HTML como un árbol de nodos manipulable por JavaScript.

¿Qué método se recomienda para seleccionar un elemento del DOM usando selectores de CSS?

El método `document.querySelector()`.

¿Cuál es la función del método `addEventListener()`?

Registra un evento específico en un elemento para ejecutar una función cuando el evento ocurra.

¿Qué hace el método `event.preventDefault()`?

Cancela el comportamiento por defecto que el navegador tiene asociado a un evento (como el envío de un formulario).

¿En qué consiste la 'delegación de eventos'?

En asignar un único manejador de eventos a un elemento padre para gestionar eventos en sus hijos mediante la propagación.

¿Qué diferencia hay entre `localStorage` y `sessionStorage`?

`localStorage` persiste los datos tras cerrar el navegador, mientras que `sessionStorage` los borra al finalizar la sesión de la pestaña.

¿Para qué sirve el método `JSON.stringify()`?

Convierte un objeto o valor de JavaScript en una cadena de texto en formato JSON.

¿Para qué sirve el método `JSON.parse()`?

Convierte una cadena de texto en formato JSON en un objeto de JavaScript.

¿Qué es el 'Modo Estricto' (`"use strict"`)?

Es una forma de optar por una variante restringida de JavaScript que elimina errores silenciosos y mejora el rendimiento.

¿Qué palabra clave se usa en las clases para heredar de otra clase?

Se utiliza la palabra clave `extends`.

¿Para qué se utiliza `super()` dentro del constructor de una clase derivada?

Para llamar al constructor de la clase padre y acceder a sus propiedades y métodos.

¿Qué permite la exportación `export default` en los módulos de JavaScript?

Permite exportar un único valor principal por archivo que puede ser importado con cualquier nombre.

¿Qué valor booleano se asocia con los valores 'falsy' en una condición?

Se evalúan como `false` en contextos donde se espera un valor booleano.

Mencione tres valores que JavaScript considera 'falsy'.

Ejemplos incluyen `0`, `""` (string vacío), `null`, `undefined`, `NaN` y `false`.

¿Cómo se define un método estático en una clase?

Usando la palabra clave `static` antes del nombre del método.

¿Cuál es el propósito del objeto `Math`?

Proveer propiedades y métodos para realizar tareas matemáticas constantes y funciones numéricas.

¿Qué devuelve el método `Array.isArray(valor)`?

Devuelve un booleano indicando si el valor pasado es efectivamente un objeto de tipo Array.

¿Qué es un 'callback' en JavaScript?

Es una función que se pasa a otra función como argumento para ser ejecutada posteriormente.

¿Qué es el 'Event Loop' (bucle de eventos)?

Es el mecanismo que permite a JavaScript realizar operaciones no bloqueantes a pesar de ser de un solo hilo.

¿Qué función tiene el operador `instanceof`?

Verifica si un objeto es una instancia de una clase o función constructora específica en su cadena de prototipos.

¿Cómo se puede evitar la mutación de un objeto original al añadirle propiedades?

Usando el operador spread (`...`) para crear un nuevo objeto con las propiedades del original y las nuevas.

¿Qué es una 'función generadora'?

Es una función que puede detener su ejecución y reanudarla más tarde, devolviendo múltiples valores mediante `yield`.

¿Qué es un `Symbol` en JavaScript?

Es un tipo de dato primitivo cuyos valores son únicos e inmutables, usados frecuentemente como identificadores de propiedades de objetos.

¿Cuál es el propósito de `globalThis`?

Proporciona una forma estándar de acceder al objeto global a través de diferentes entornos (navegador, Node.js).

¿Qué hace el método `Object.keys(objeto)`?

Devuelve un array con los nombres de las propiedades enumerables propias de un objeto.

¿Para qué sirve el método `setTimeout()`?

Para ejecutar una función o un fragmento de código después de que haya transcurrido un tiempo determinado en milisegundos.

¿Cómo se detiene la ejecución de un intervalo creado con `setInterval()`?

Utilizando la función `clearInterval()` pasando el identificador del intervalo.

¿Qué significa que JavaScript es un lenguaje de 'un solo hilo' (single-threaded)?

Significa que solo puede ejecutar una instrucción o tarea a la vez en el hilo principal.

¿Qué es la 'propagación de eventos' (event bubbling)?

Es el proceso donde un evento se dispara en el elemento más profundo y luego se propaga hacia sus ancestros en el DOM.

¿Cuál es la diferencia entre `textContent` e `innerHTML`?

`textContent` devuelve o establece el texto plano, mientras que `innerHTML` permite manipular el contenido HTML dentro del elemento.

¿Qué hace el método `Array.prototype.includes()`?

Determina si un array incluye un determinado elemento, devolviendo `true` o `false` según corresponda.

¿Qué permite hacer el API `Intl`?

Proporciona comparación de cadenas, formato de números y formato de fechas y horas sensible al idioma.

¿Qué es un `WeakMap`?

Es una colección de pares clave-valor en la que las claves deben ser objetos y no impiden la recolección de basura de dichos objetos.

¿Cómo se lanza manualmente un error en JavaScript?

Utilizando la palabra clave `throw` seguida de un objeto o valor de error.

¿Para qué se usa el objeto `Proxy`?

Para definir comportamientos personalizados para operaciones fundamentales en objetos, como la búsqueda de propiedades o la asignación.

¿Cuál es la función de `Promise.all()`?

Toma un conjunto de promesas y devuelve una sola promesa que se resuelve cuando todas las promesas del conjunto se han cumplido.

En programación, ¿qué es una variable?

Es un espacio en memoria con un nombre simbólico (un identificador) que está asociado a un valor que puede cambiar.

¿Cuál es la palabra clave que se usaba tradicionalmente en JavaScript para declarar variables, y cuáles son sus dos características principales?

La palabra clave es `var`, y sus características son el ámbito de función (function scope) y el hoisting.

Una variable declarada con `var` solo es local a la función donde se creó y no respeta bloques como `if` o bucles `for`. Esto se conoce como _____.

Ámbito de función (function scope)

¿Qué es el 'hoisting' en JavaScript?

Es el comportamiento donde las declaraciones de variables y funciones son procesadas antes de ejecutar el código, asignándoles memoria durante la fase de compilación.

En el contexto de `hoisting` con `var`, ¿qué se 'eleva' al inicio del ámbito: la declaración o la inicialización?

Solo se eleva la declaración, no la inicialización. El valor de la variable será `undefined` hasta que se alcance la línea de asignación.

¿Qué tipo de ámbito (scope) tienen las variables declaradas con `let` y `const`?

Tienen ámbito de bloque (block scope), lo que significa que solo existen dentro del bloque `{...}` donde fueron declaradas.

¿Cuándo se debe usar la palabra clave `let` para declarar una variable?

Se debe usar `let` cuando el valor de la variable puede necesitar ser reasignado más adelante en el código.

En JavaScript, ¿qué es una estructura condicional y para qué sirve?

Es una estructura de control de flujo que permite tomar decisiones en el código, ejecutando diferentes bloques de instrucciones según se cumpla o no una condición.

La estructura de control de flujo `if (condicion) { ... } else { ... }` es un ejemplo de una _____.

Condicional

¿Qué es un bucle o iteración en programación?

Es una estructura de control que permite repetir un bloque de código un número determinado de veces o mientras se cumpla una condición.

¿En qué situación se suele utilizar preferentemente un bucle `for`?

Se suele utilizar cuando se conoce de antemano el número de iteraciones que se van a realizar.

Un bucle `while` ejecuta un bloque de código mientras la condición que lo genera sea _____.

Verdadera

¿Cuál es la principal diferencia entre un bucle `while` y un bucle `do...while`?

El bucle `do...while` garantiza que el bloque de código se ejecute al menos una vez, ya que la condición se evalúa al final de la iteración.

¿Qué es una función en programación?

Es un bloque de código reutilizable diseñado para realizar una tarea específica, que puede recibir parámetros y devolver un resultado.

¿Cuáles son los tres componentes importantes de una función?

Los parámetros (entrada), el código de la función (operaciones) y el resultado o valor de retorno (salida).

En JavaScript, ¿qué es un Array?

Es un objeto global tipo lista de alto nivel que permite almacenar una colección de múltiples elementos bajo un único nombre de variable.

¿En qué índice comienza la numeración de los elementos de un array en JavaScript?

Comienza en el índice 0.

¿Cómo se accede al primer elemento de un array llamado `frutas`?

Se accede mediante la notación de corchetes: `frutas[0]`.

Dada la declaración `let frutas = ["Manzana", "Banana"];`, ¿qué devuelve `frutas.length`?

Devuelve `2`, que es el número de elementos en el array.

¿Qué método de array se utiliza para añadir un elemento al final de la lista?

El método `push()`.

Considera el array `let frutas = ["Manzana", "Banana"];`. ¿Cuál es el resultado de `frutas.push("Naranja");`?

El array `frutas` se modifica a `["Manzana", "Banana", "Naranja"]`.

¿Qué método de array se utiliza para eliminar el último elemento de la lista y devolverlo?

El método `pop()`.

¿Qué método de array se utiliza para añadir un elemento al principio de la lista?

El método `unshift()`.

¿Qué método de array se utiliza para eliminar el primer elemento de la lista y devolverlo?

El método `shift()`.

¿Cómo se encuentra la posición (índice) de un elemento específico en un array?

Usando el método `indexOf('elementoBuscado')`, que devuelve el índice o -1 si no se encuentra.

El método de array `_____` permite eliminar o añadir elementos en cualquier posición, modificando el array original.

splice()

En el código `frutas.splice(1, 2);`, ¿qué operación se está realizando sobre el array `frutas`?

Se están eliminando 2 elementos a partir del índice 1.

¿Qué método se utiliza para crear una copia superficial (shallow copy) de una porción de un array?

El método `slice()`.

¿Cómo se recorren todos los elementos de un array para ejecutar una función en cada uno de ellos sin crear un nuevo array?

Usando el método `forEach()`, que recibe una función callback como argumento.

¿Qué método de array crea un nuevo array con los resultados de llamar a una función para cada elemento del array original?

El método `map()`.

const precios = [10

15, 20];

¿Cuál es el valor de `preciosEnDolares`?

`["$10.00", "$15.00", "$20.00"]`

¿Qué método de array crea un nuevo array con todos los elementos que pasan una prueba implementada por una función proporcionada?

El método `filter()`.

const numeros = [1

2, 3, 4, 5];

¿Cuál es el valor de `pares`?

`[2, 4]`

Diferencia entre programación síncrona y asíncrona.

La síncrona ejecuta tareas secuencialmente (una tras otra), bloqueando la siguiente hasta terminar la actual. La asíncrona permite que múltiples tareas se ejecuten simultáneamente sin bloquear el hilo principal.

Por defecto, JavaScript es un lenguaje de programación _____ de un solo hilo.

síncrono

¿Por qué es importante la asincronía en JavaScript, especialmente en el desarrollo web?

Para evitar que operaciones de larga duración (como peticiones de red o lectura de archivos) bloqueen la ejecución del resto del código, manteniendo la interfaz de usuario receptiva.

El modelo de concurrencia de JavaScript está basado en un _____ de eventos.

loop

¿Qué es una función 'callback' en JavaScript?

Es una función que se pasa como argumento a otra función, para ser ejecutada ('llamada de vuelta') después de que una operación asíncrona haya completado.

La función `setTimeout(callback, delay)` es un ejemplo clásico de una operación _____ que utiliza un callback.

asíncrona

¿Qué problema común surge al anidar múltiples callbacks para gestionar operaciones asíncronas dependientes entre sí?

El problema conocido como "Callback Hell" o "Pyramid of Doom", que hace el código difícil de leer y mantener.

¿Qué es una 'Promise' (Promesa) en JavaScript?

Es un objeto que representa la eventual finalización (o fallo) de una operación asíncrona y su valor resultante.

¿Cuáles son los tres estados posibles de una Promesa?

Pendiente (`pending`), resuelta (`fulfilled` o `resolved`), y rechazada (`rejected`).

Para manejar el resultado de una promesa que se ha resuelto con éxito, se utiliza el método `_____`.

.then()

Para manejar un error o un rechazo en una promesa, se utiliza el método `_____`.

.catch()

La capacidad de encadenar varios métodos `.then()` uno tras otro se conoce como _____.

Encadenamiento de promesas (Promise chaining)

En el constructor `new Promise((resolve, reject) => { ... })`, ¿para qué se utiliza la función `resolve`?

Se utiliza para marcar la promesa como resuelta exitosamente, pasando opcionalmente un valor como resultado.

En el constructor `new Promise((resolve, reject) => { ... })`, ¿para qué se utiliza la función `reject`?

Se utiliza para marcar la promesa como rechazada, pasando un error o una razón del fallo.

¿Qué es `async/await` en JavaScript?

Es una sintaxis especial para trabajar con promesas de una manera más cómoda y legible, permitiendo escribir código asíncrono que parece síncrono.

¿Qué efecto tiene la palabra clave `async` al inicio de la declaración de una función?

Hace que la función devuelva implícitamente una Promesa. Si la función retorna un valor, este será el valor resuelto de la promesa.

¿En qué tipo de función se puede utilizar la palabra clave `await`?

La palabra clave `await` solo se puede utilizar dentro de una función declarada como `async`.

¿Qué hace la palabra clave `await` cuando se coloca antes de una expresión que devuelve una promesa?

Pausa la ejecución de la función `async` hasta que la promesa es resuelta o rechazada, y luego reanuda la ejecución con el valor resuelto.

¿Cómo se manejan los errores de promesas rechazadas cuando se utiliza `async/await`?

Se utiliza un bloque `try...catch`, de la misma manera que en el código síncrono.

¿Qué es la recursividad en programación?

Es una técnica en la que una función se llama a sí misma para resolver un problema, dividiéndolo en subproblemas más pequeños del mismo tipo.

¿Cuál es el componente esencial de una función recursiva que evita que se ejecute indefinidamente?

Un caso base (o condición de parada), que es una condición bajo la cual la función deja de llamarse a sí misma y devuelve un resultado.

Además del caso base, ¿qué otros dos elementos caracterizan a una función recursiva?

La operación que se realiza en cada iteración y la llamada recursiva a sí misma con un argumento modificado para acercarse al caso base.

En el modelo de concurrencia de JavaScript, ¿qué es la 'Pila de llamadas' (Call Stack)?

Es una estructura de datos que registra la posición del programa, guardando las funciones que se están ejecutando. Las llamadas a funciones se apilan una sobre otra.

En el modelo de concurrencia de JavaScript, ¿qué es la 'Cola de mensajes' (Message Queue)?

Es una lista de mensajes (eventos, callbacks) a ser procesados. Cada mensaje tiene una función asociada que se ejecuta cuando la pila de llamadas está vacía.

El _____ vigila constantemente la Pila de llamadas y la Cola de mensajes; si la pila está vacía, toma el primer mensaje de la cola y lo procesa.

Loop de eventos (Event Loop)

Verdadero o Falso: En JavaScript, una función puede ser interrumpida a mitad de su ejecución por otra función.

Falso. Cada mensaje se procesa completamente antes de que cualquier otro mensaje sea procesado ("run-to-completion").

Al llamar a `setTimeout(fn, 0)`, ¿se garantiza que la función `fn` se ejecutará inmediatamente después de 0 milisegundos?

No, 0 es el tiempo mínimo de espera. La función se añadirá a la cola de mensajes y se ejecutará solo cuando la pila de llamadas esté vacía y le toque su turno.

Si tienes una variable que no debe cambiar su valor una vez asignado, ¿qué palabra clave deberías usar para declararla?

`const`

¿Cuál es la principal diferencia entre `let` y `const`?

Una variable declarada con `let` puede ser reasignada, mientras que a una declarada con `const` no se le puede reasignar un nuevo valor.

El método `Array.prototype._____()` aplica una función a un acumulador y a cada valor del array (de izquierda a derecha) para reducirlo a un único valor.

reduce()

¿Qué devuelve la función `parseInt("123cuatro5")`?

Devuelve el entero `123`, ya que convierte la cadena hasta que encuentra un carácter no numérico.

¿Para qué sirve la función `isNaN(valor)` en JavaScript?

Devuelve `true` si el valor proporcionado no es un número (`Not-a-Number`), y `false` en caso contrario.

¿Es JavaScript un lenguaje fuertemente o débilmente tipado y qué significa eso?

Es débilmente tipado, lo que significa que el tipo de una variable es dinámico y puede cambiar durante la ejecución (ej. una variable puede contener un número y luego una cadena).

En JavaScript, ¿cómo se crea una nueva instancia de un objeto a partir de una función constructora o una clase?

Utilizando el operador `new`.

Dentro del método de un objeto, ¿a qué se refiere la palabra clave `this`?

Se refiere al objeto actual, es decir, al objeto sobre el cual se está invocando el método.

Página 1 / 1

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .