JavaScript es uno de los lenguajes de programación más populares en el desarrollo web, tanto del lado del cliente como del servidor. Debido a su amplia adopción y evolución, los entrevistadores suelen hacer preguntas que evalúan tanto los conocimientos básicos como las habilidades avanzadas de los candidatos. A continuación, te presentamos una lista de preguntas comunes de JavaScript para entrevistas, con respuestas detalladas, que te ayudarán a prepararte de manera efectiva.
Respuesta:
JavaScript es un lenguaje de programación dinámico y de alto nivel que se utiliza principalmente en el desarrollo web para crear interactividad en los sitios. Es ligero, interpretado y sigue el modelo de programación basado en eventos. JavaScript puede ejecutarse tanto en el navegador como en el servidor (por ejemplo, con Node.js).
var
, let
y const
?
Respuesta:
var
: Define una variable con ámbito de función. Puede ser redeclarada y su valor puede cambiar.
let
: Introducido en ES6, define una variable con ámbito de bloque. No puede ser redeclarada en el mismo bloque y su valor puede cambiar.
const
: También introducido en ES6, define una constante con ámbito de bloque. No puede ser redeclarada y su valor no puede cambiar una vez asignado, aunque los objetos y arreglos asignados a const
pueden modificarse internamente.
var x = 10;
let y = 20;
const z = 30;
Respuesta:
El hoisting es un comportamiento de JavaScript en el que las declaraciones de variables y funciones son "elevadas" al principio de su contexto de ejecución. Solo las declaraciones se elevan, no las asignaciones.
console.log(x); // undefined
var x = 5;
// Internamente se trata como:
var x;
console.log(x); // undefined
x = 5;
Respuesta:
Una clausura es una función que recuerda y tiene acceso a las variables del entorno en el que fue creada, incluso después de que ese entorno haya finalizado. Las clausuras permiten la creación de funciones con "estado" privado.
function contador() {
let cuenta = 0;
return function() {
cuenta++;
return cuenta;
}
}
const miContador = contador();
console.log(miContador()); // 1
console.log(miContador()); // 2
Respuesta:
El event loop es un mecanismo que permite a JavaScript manejar operaciones asíncronas. JavaScript es de un solo hilo, lo que significa que solo puede ejecutar una tarea a la vez. Sin embargo, mediante el uso del event loop, JavaScript puede procesar eventos, callbacks y promesas de manera eficiente sin bloquear el hilo principal.
1. Las tareas que requieren mucho tiempo, como solicitudes a un servidor, se manejan de manera asíncrona.
2. Mientras se espera la respuesta, el event loop sigue ejecutando otras tareas.
3. Una vez que la tarea asíncrona está lista, el callback se coloca en la cola de tareas para ser ejecutado.
Respuesta:
call()
: Invoca una función y permite pasarle argumentos individualmente.
apply()
: Similar a call()
, pero los argumentos se pasan en forma de array.
bind()
: Devuelve una nueva función con un valor específico de this
, pero no la ejecuta inmediatamente.
const persona = {
nombre: 'Juan',
saludar: function(saludo) {
console.log(`${saludo}, soy ${this.nombre}`);
}
};
const otraPersona = { nombre: 'Carlos' };
persona.saludar.call(otraPersona, 'Hola'); // Hola, soy Carlos
persona.saludar.apply(otraPersona, ['Hola']); // Hola, soy Carlos
const saludarCarlos = persona.saludar.bind(otraPersona);
saludarCarlos('Hola'); // Hola, soy Carlos
Respuesta:
El scope (ámbito o alcance) determina la accesibilidad de las variables, objetos y funciones en diferentes partes del código. JavaScript tiene dos tipos principales de scope:
let global = "soy global";
function mostrar() {
let local = "soy local";
console.log(global); // soy global
console.log(local); // soy local
}
mostrar();
console.log(local); // Error: local is not defined
Respuesta:
El contexto de ejecución en JavaScript es el entorno en el que se evalúa y ejecuta el código. Se crea un nuevo contexto de ejecución cada vez que se llama una función o se entra en un bloque de código.
El contexto de ejecución incluye:
window
.
this
: Hace referencia al objeto actual.
Respuesta:
Las promesas son una forma de manejar operaciones asíncronas de manera más limpia y estructurada. Una promesa representa un valor que puede estar disponible ahora, en el futuro o nunca. Tiene tres estados posibles:
const miPromesa = new Promise((resolve, reject) => {
let exito = true;
if (exito) {
resolve("¡Éxito!");
} else {
reject("Error");
}
});
miPromesa.then(respuesta => {
console.log(respuesta); // ¡Éxito!
}).catch(error => {
console.log(error);
});
Respuesta:
async/await
es una sintaxis moderna para trabajar con promesas en JavaScript. Facilita la lectura y el manejo de código asíncrono, haciéndolo parecer más sincrónico.
async function obtenerDatos() {
try {
let respuesta = await fetch('https://api.example.com/datos');
let datos = await respuesta.json();
console.log(datos);
} catch (error) {
console.log("Error:", error);
}
}
obtenerDatos();
Prepararse para una entrevista de JavaScript puede ser un desafío, dado el extenso ecosistema del lenguaje. Sin embargo, familiarizarse con estos conceptos clave te permitirá abordar preguntas técnicas con mayor confianza y demostrar tu comprensión profunda del lenguaje.
Jorge García
Fullstack developer