//
JavaScript
50 Preguntas de JavaScript para Entrevistas Técnicas
Espacio Publicitario — Parte Superior
-
01.¿Cuál es la diferencia entre
var,letyconst?var: tiene alcance de función (function scope) y se puede redeclarar. Es "hoisted" al principio. Evítalo en código moderno.
let: tiene alcance de bloque (block scope), no se puede redeclarar en el mismo bloque. Úsalo para variables que cambian.
const: igual queletpero no se puede reasignar (aunque objetos y arrays sí se pueden mutar). -
02.¿Qué es el hoisting en JavaScript?Es el comportamiento de JavaScript de "elevar" las declaraciones de variables y funciones al principio de su scope antes de ejecutar el código. Con
var, la variable existe pero valeundefinedhasta que se asigna. Las declaraciones de función se elevan completamente.console.log(x); // undefined (no error) var x = 5;
-
03.Explica qué es un Closure.Un closure es una función que "recuerda" su entorno léxico aunque se ejecute fuera de él. Es decir, la función tiene acceso a las variables de la función que la envuelve, incluso después de que esa función haya terminado.
function contador() { let count = 0; return () => ++count; } const incrementar = contador(); incrementar(); // 1 incrementar(); // 2 -
04.¿Qué es el Event Loop?JavaScript es single-thread, pero el Event Loop permite la asincronía. Funciona así: el código síncrono va al Call Stack. Las operaciones asíncronas (fetch, setTimeout) se envían a las Web APIs. Cuando terminan, se colocan en la Queue (cola de callbacks o microtasks). El Event Loop revisa si el Call Stack está vacío y entonces mueve las tareas de la cola al stack.
-
05.¿Cuál es la diferencia entre
==y===?==compara valores con coerción de tipo (JavaScript convierte los tipos si son diferentes).===(igualdad estricta) compara valor Y tipo sin conversión. Siempre usa===para evitar comportamientos inesperados.0 == false // true (coerción) 0 === false // false (tipos distintos)
-
06.¿Qué son las Promesas (Promises)?Una Promise representa una operación asíncrona que puede resolver (éxito) o rechazar (error). Tiene tres estados: pending, fulfilled y rejected.
const miPromesa = new Promise((resolve, reject) => { setTimeout(() => resolve("¡Éxito!"), 1000); }); miPromesa.then(val => console.log(val)); -
07.¿Qué hace
async/await?async/awaites azúcar sintáctico sobre las Promesas. Hace que el código asíncrono sea más legible, como si fuera síncrono. Una funciónasyncsiempre devuelve una Promise.awaitpausa la ejecución dentro de esa función hasta que la Promise resuelva.const getData = async () => { const res = await fetch('/api/data'); const data = await res.json(); return data; }; -
08.¿Qué es el prototype en JavaScript?En JavaScript, todos los objetos tienen una propiedad interna
[[Prototype]]que apunta a otro objeto. Cuando accedes a una propiedad que no existe en el objeto, JS busca en su cadena de prototipos (prototype chain) hasta encontrarla o llegar anull. -
09.¿Qué diferencia hay entre
nullyundefined?undefined: una variable existe pero no tiene valor asignado.null: asignación intencional de "sin valor". Son distintos tipos:typeof nulles"object"(un bug histórico de JS) ytypeof undefinedes"undefined". -
10.¿Qué es la desestructuración (destructuring)?Permite extraer valores de arrays o propiedades de objetos en variables individuales de forma concisa:
// Objeto const { nombre, edad } = { nombre: "Ana", edad: 23 }; // Array const [primero, segundo] = [1, 2, 3]; -
11.¿Qué es el spread operator
...?Expande elementos de un iterable (array, objeto) en posiciones individuales. Muy útil para copiar y combinar:const arr1 = [1, 2, 3]; const arr2 = [...arr1, 4, 5]; // [1, 2, 3, 4, 5] const obj1 = { a: 1 }; const obj2 = { ...obj1, b: 2 }; // { a: 1, b: 2 } -
12.¿Qué son los métodos de array
map,filteryreduce?map: transforma cada elemento y devuelve un nuevo array.
filter: devuelve un nuevo array solo con los elementos que pasan la condición.
reduce: acumula los elementos en un único valor (suma, objeto, etc.).const nums = [1, 2, 3, 4]; nums.map(n => n * 2); // [2, 4, 6, 8] nums.filter(n => n > 2); // [3, 4] nums.reduce((acc, n) => acc + n, 0); // 10
-
13.¿Qué es el contexto
thisen JavaScript?thisse refiere al objeto que "llama" a la función. Su valor depende de cómo se invoca la función. En métodos de objeto,thises el objeto. En funciones flecha,thishereda el contexto del entorno donde se definió (no crea su propiothis). -
14.¿Qué diferencia hay entre función declarada y función expresión?La función declarada (
function foo() {}) se eleva completamente (hoisting) y puede llamarse antes de su declaración. La función expresión (const foo = function() {}o arrow function) NO se eleva completamente, solo la declaración de la variable. -
15.¿Qué es el "callback hell" y cómo se evita?Es el problema de anidar demasiados callbacks, haciendo el código difícil de leer y mantener. Se evita usando Promises encadenadas con
.then()o usandoasync/await, que aplana el código y lo hace lineal.
Espacio Publicitario
Espacio Publicitario — Mid
💡 Clave en entrevista
Cuando te pidan diferencias, estructura tu respuesta. Empieza con una definición corta de cada
concepto y luego da un ejemplo de código. Que vean que piensas claro.
Espacio Publicitario — Final