Cómo prepararse para una entrevista de JavaScript: guía completa
\n\nLa entrevista de JavaScript no es un examen escolar donde solo necesitas memorizar respuestas. Es una conversación en la que no solo se evalúan tus conocimientos de sintaxis, sino también tu capacidad de pensar, comprender los mecanismos del lenguaje y resolver problemas reales. Si sientes que "nadas" en closures, confundes this y temes al event loop, no te preocupes. Hemos preparado una guía estructurada que te ayudará a superar con confianza una entrevista de JavaScript.
¿Por qué es tan difícil prepararse para una entrevista de JS?
\n\nJavaScript es un lenguaje con alma (y a veces con sorpresas). Una misma función puede comportarse de manera diferente según el contexto. Por eso, en una entrevista de JavaScript no solo te preguntan "qué imprime este código", sino que te piden que expliques por qué. Y ahí es donde muchos fracasan. Pero te enseñaremos a detectar estas trampas.
\n\n1. Conceptos básicos que debes saber de memoria
\n\nTipos de datos y coerción de tipos
\n\nEmpecemos por lo básico. En JavaScript hay 7 tipos primitivos: string, number, boolean, null, undefined, symbol, bigint — y uno complejo: object. Pero el truco está en que typeof null devuelve "object" — esto es un error histórico que debes conocer.
En las entrevistas de JavaScript suelen preguntar sobre la coerción implícita de tipos. Por ejemplo:
\n\nconsole.log([] + []); // ""\nconsole.log([] + {}); // "[object Object]"\nconsole.log({} + []); // 0 (en la consola del navegador)\n\n\n¿Por qué sucede esto? Porque el operador + intenta convertir los operandos a primitivos, llamando a toString() o valueOf(). Recuerda: un array vacío se convierte en una cadena vacía, y un objeto en la cadena "[object Object]".
Closures y entorno léxico
\n\nEste es uno de los temas más frecuentes en las entrevistas de JavaScript. Un closure es una función que "recuerda" las variables de su ámbito externo incluso después de que la función externa haya terminado de ejecutarse.
\n\nfunction createCounter() {\n let count = 0;\n return function() {\n count++;\n return count;\n };\n}\n\nconst counter = createCounter();\nconsole.log(counter()); // 1\nconsole.log(counter()); // 2\n\nEn la entrevista pueden pedirte que escribas una función similar o que expliques por qué en un bucle con var surge el problema clásico:
for (var i = 0; i < 5; i++) {\n setTimeout(() => console.log(i), 1000);\n}\n// Imprime 5, 5, 5, 5, 5\n\nLa solución es usar let o envolverlo en un closure. Asegúrate de explicar que var tiene ámbito de función, no de bloque.
2. "This" — el dolor y la alegría de todo desarrollador JS
\n\nLas preguntas sobre this son un clásico del género. La regla es simple: el valor de this se determina por cómo se llama a la función, no por dónde se declara.
- \n
- En el contexto global (en el navegador),
thiseswindow. \n - En un método de un objeto, es el propio objeto. \n
- En una función constructora, es una nueva instancia. \n
- En una función flecha,
thisproviene del entorno léxico externo. \n
Ejemplo para la entrevista:
\n\nconst obj = {\n name: "JS",\n getName: function() {\n return this.name;\n }\n};\n\nconst fn = obj.getName;\nconsole.log(fn()); // undefined (contexto perdido)\n\n¿Cómo solucionarlo? Usando bind, call, apply o una función flecha.
3. Event Loop y asincronía — tema para expertos
\n\nSin entender el event loop, no aprobarás una entrevista de JavaScript de nivel intermedio. Recuerda la secuencia: primero se ejecuta todo el código síncrono (pi