Test cuestionario de JavaScript - the question form
Preguntas: 16 · 10 minutos
1. ¿A qué se evalúa typeof null en JavaScript?
""object""
""undefined""
""null""
""boolean""
2. ¿Qué sucede cuando se ejecuta este código: if (true) { let message = ""hello""; } console.log(message);?
Imprime ""hello"" porque un bloque if no crea un ámbito.
Se produce un ReferenceError porque message tiene ámbito de bloque.
Imprime undefined porque message existe, pero no tiene ningún valor fuera del bloque.
Se produce un SyntaxError porque let no se puede usar dentro de una sentencia if.
3. Dado const user = {};, ¿cuál es el resultado de user.profile?.name?
Un TypeError porque profile no existe
null porque el encadenamiento opcional proporciona un valor null
Una cadena vacía porque no se ha asignado ningún valor a name
undefined porque el encadenamiento opcional se detiene en la propiedad inexistente
4. ¿Qué devuelve [2, 4, 5].every(n => n % 2 === 0)?
[2, 4]
true, porque al menos un elemento es par
5, porque es el primer elemento que no pasa la prueba
false, porque no todos los elementos son pares
5. ¿Qué cadena produce JSON.stringify({ a: 1, b: undefined })?
{""a"":1}
{""a"":1,""b"":undefined}
{""a"":1,""b"":null}
La llamada devuelve undefined porque una propiedad es undefined.
6. ¿Qué produce [...new Set([1, 1, 2, 2])]?
Un arreglo de cuatro elementos que contiene 1, 1, 2 y 2
Un arreglo de dos elementos que contiene 2 y 2
Un objeto Set que contiene los valores numéricos 1 y 2
Un arreglo de dos elementos que contiene los valores numéricos 1 y 2
7. Si una función async contiene return 5;, ¿qué devuelve una llamada a esa función?
Una Promise resuelta con el número 5
undefined hasta que se espere la función con await
Un callback que proporciona el número 5
El número 5 de inmediato, igual que una función normal
8. ¿Cuál es el orden de salida de este código: console.log(""A""); setTimeout(() => console.log(""B""), 0); Promise.resolve().then(() => console.log(""C"")); console.log(""D"");?
A, D, C, B
A, D, B, C
A, B, C, D
A, C, D, B
9. ¿Qué sucede después de ejecutar este código: const items = [1, 2]; items.push(3);?
Se produce un error porque un arreglo declarado con const no se puede modificar.
El arreglo se convierte en [1, 2, 3] porque const impide reasignar la variable, no modificar el arreglo.
Se crea un nuevo arreglo [1, 2, 3], mientras que items permanece como [1, 2].
El valor 3 se ignora porque push solo funciona con arreglos declarados mediante let.
10. Considera: const obj = { value: 7, getValue() { const read = () => this.value; return read(); } }; ¿Qué devuelve obj.getValue()?
La propia función read en lugar de su resultado
undefined, porque las funciones flecha siempre establecen this como undefined
7, porque la función flecha usa el valor de this de getValue
Un TypeError porque this no se puede usar dentro de una función anidada
11. ¿Qué devuelve normalmente Array.prototype.map()?
El arreglo original después de reemplazar cada uno de sus elementos
Un único valor acumulado calculado a partir de todos los elementos
Un nuevo arreglo que contiene únicamente los elementos que pasan una prueba
Un nuevo arreglo que contiene el resultado de aplicar una función a cada elemento
12. ¿Qué valor se asigna a limit mediante const limit = 0 ?? 10;?
10, porque 0 es un valor falsy
null, porque ninguno de los operandos es null
0, porque el operador de fusión nula solo usa el valor alternativo cuando encuentra null o undefined
undefined, porque ?? no se puede usar con valores numéricos
13. Después de const [first, , third] = [10, 20, 30];, ¿qué valores contienen first y third?
first es 10 y third es 20
first es 10 y third es 30
first es 20 y third es 30
Ambos son undefined porque se omitió una posición del arreglo.
14. Considera: function makeCounter() { let n = 0; return () => ++n; } const count = makeCounter(); console.log(count(), count()); ¿Qué se imprime?
0 0
1 2
1 1
0 1
15. ¿Cuál es la principal diferencia entre el operador de igualdad estricta (===) y el operador de igualdad no estricta (==) de JavaScript?
La igualdad estricta compara el contenido de los objetos, mientras que la igualdad no estricta compara sus referencias.
La igualdad estricta solo funciona con números, mientras que la igualdad no estricta funciona con todos los tipos de datos.
La igualdad estricta compara valores sin conversión de tipos, mientras que la igualdad no estricta puede convertir primero los tipos.
La igualdad estricta se usa para asignar, mientras que la igualdad no estricta se usa para comparar.
16. Dado const letters = [""a"", ""b"", ""c""]; const removed = letters.splice(1, 1, ""x"", ""y"");, ¿qué contienen después letters y removed?
letters es [""a"", ""b"", ""c""] y removed es [""x"", ""y""]
letters es [""a"", ""x"", ""y""] y removed es [""b"", ""c""]
letters es [""a"", ""x"", ""y"", ""c""] y removed es [""b""]
letters es [""a"", ""c"", ""x"", ""y""] y removed es ""b""