Preguntas y respuestas: JavaScript y TypeScript

Repasa JavaScript y TypeScript: aquí tienes una selección de preguntas de todos los niveles, con respuesta y explicación. Para ponerte a prueba sin ver las respuestas, juega a los quizzes.

Jugar a los quizzes de JavaScript y TypeScript

Fácil

¿En qué año creó Brendan Eich JavaScript en Netscape?

Respuesta : 1995

Brendan Eich diseñó JavaScript en 1995 en Netscape, en unos diez días. El lenguaje no tiene ningún parentesco con Java, a pesar del nombre.

¿Qué palabra clave declara una variable de ámbito de bloque, cuyo valor puede cambiarse?

Respuesta : let

let declara una variable de ámbito de bloque que se puede reasignar. const impide la reasignación, y var tiene ámbito de función.

¿Qué devuelve typeof aplicado a la cadena 'abc' en JavaScript?

Respuesta : string

El operador typeof devuelve una cadena que describe el tipo del valor: para una cadena de caracteres, el resultado es string.

¿Qué devuelve la expresión 0 == '0' en JavaScript?

Respuesta : true

El operador == compara tras una conversión: '0' se convierte en el número 0. Con === los tipos también deben coincidir, y el resultado sería false.

¿Qué propiedad da el número de elementos de un array en JavaScript?

Respuesta : length

La propiedad length da el número de elementos de un array: [1, 2, 3].length vale 3.

¿Qué método devuelve el primer elemento que coincide con un selector CSS, como 'div.carte'?

Respuesta : querySelector

querySelector acepta cualquier selector CSS y devuelve el primer elemento encontrado, o null si ninguno coincide.

¿Cuál es el papel de addEventListener en el navegador?

Respuesta : Registrar una función que se llama cuando se produce un evento

addEventListener asocia una función a un elemento para un tipo de evento, como un clic. Esa función se llama cada vez que se produce el evento.

¿Qué función convierte un objeto JavaScript en texto con formato JSON?

Respuesta : JSON.stringify

JSON.stringify convierte un valor JavaScript en texto JSON; JSON.parse hace lo contrario.

Medio

¿Qué versión de ECMAScript introdujo let, const, las funciones flecha y las clases?

Respuesta : ES6 (ECMAScript 2015)

ES6, publicada en 2015, introdujo let y const, las funciones flecha y las clases.

¿Qué muestra console.log(x) colocado antes de la línea var x = 5 en el mismo script?

Respuesta : undefined

Con var, la declaración sube (hoisting) pero no la asignación: x ya existe, con el valor undefined. Con let, el mismo acceso lanza un ReferenceError.

En una función flecha, ¿a qué corresponde this?

Respuesta : Al de la función envolvente, definido en el lugar donde se escribe la función

Una función flecha no tiene this propio: toma el de la función envolvente, es decir, el del lugar donde se escribe la función.

¿Qué se llama closure en JavaScript?

Respuesta : Una función que conserva el acceso a las variables del ámbito donde se creó

Una closure conserva el acceso a las variables de la función envolvente, incluso después de que esta haya terminado de ejecutarse.

¿Qué valor de JavaScript indica que una variable se ha declarado pero no ha recibido ningún valor?

Respuesta : undefined

undefined es el valor de una variable declarada sin asignación. null representa una ausencia de valor elegida explícitamente por el programador.

¿Qué devuelve [1, 2, 3, 4].filter(n => n % 2 === 0)?

Respuesta : [2, 4]

filter conserva los elementos para los que la función devuelve true: aquí, los números pares.

¿Qué devuelve Promise.resolve(5).then(x => x * 2)?

Respuesta : Una promesa que se resolverá con el valor 10

El valor resultante del then es lo que devuelve la función callback: aquí 5 por 2, es decir 10.

¿Qué devuelve una función marcada como async en JavaScript?

Respuesta : Siempre una promesa

Una función async siempre devuelve una promesa: el valor de return se envuelve, y una excepción se convierte en un rechazo.

Difícil

¿En qué año publicó Microsoft la primera versión de TypeScript?

Respuesta : 2012

TypeScript, dirigido por Anders Hejlsberg, lo publica Microsoft en octubre de 2012: es un superconjunto tipado de JavaScript.

¿Qué diferencia separa any de unknown en TypeScript?

Respuesta : Un valor unknown debe comprobarse antes de usarlo, mientras que any desactiva esa comprobación

any desactiva la comprobación de tipos sobre el valor. unknown obliga a restringir el tipo antes de cualquier uso, lo que protege el código.

¿Qué hace el parámetro de tipo T en function identite<T>(x: T): T?

Respuesta : Conserva el tipo del argumento recibido y lo devuelve tal cual

T es una variable de tipo: TypeScript la deduce del argumento en cada llamada, lo que conserva el tipo preciso del resultado.

En TypeScript, ¿en qué se basa la compatibilidad entre dos tipos de objeto?

Respuesta : Por la estructura: cuenta lo que posee el objeto, no el nombre declarado

TypeScript es estructural: un objeto es compatible si posee las propiedades esperadas con los tipos correctos, incluso sin declaración explícita.

Entre dos tareas, ¿qué cola vacía por completo el bucle de eventos antes de pasar a la siguiente?

Respuesta : La cola de microtareas, como las promesas

Los callbacks de las promesas forman la cola de microtareas, que el bucle vacía por completo entre dos tareas. Las macrotareas, como setTimeout, se tratan una a una.

Cuando falta una propiedad de un objeto JavaScript, ¿dónde la busca después el motor?

Respuesta : En el prototipo del objeto, y después en la cadena de prototipos

La búsqueda sube por la cadena de prototipos. Si la propiedad no existe en ninguna parte, el valor leído es undefined, sin error.

¿Qué opción de tsconfig.json activa de una vez todos los controles estrictos?

Respuesta : strict

strict: true activa en particular strictNullChecks y noImplicitAny. Cada una de estas opciones también puede ajustarse por separado.

¿Qué herramienta instala las dependencias listadas en el archivo package.json de un proyecto Node.js?

Respuesta : npm

npm lee el archivo package.json e instala las dependencias en la carpeta node_modules.

Temas relacionados

Jugar a los quizzes de JavaScript y TypeScript