Hola, esta es la última parte del análisis de preguntas de nuestro stand.
Reaccionar preguntas aquí .
Análisis de las primeras cuatro rondas aquí .

Aquí, las preguntas sobre temas prácticamente no están agrupadas, analizamos todo una por una.
Vamos:
¿Cuál será el resultado?
let i = 0; let a = 1; for (; a >= 0; i++) { a -= 0.1; } console.log(i); a) 1 b) 11 c) d) 10
Respuesta + análisisb) 11
Aquí todo es bastante simple. Esto es más una cuestión de atención plena. El ciclo se ejecutará 11 veces, porque no somos estrictos
mayor que >
y mayor o igual que >=
.
¿Cuál será el resultado?
{} + []; a) 0 b) null c) '[object Object]' d) NaN
Respuesta + análisisa) 0
El truco aquí es que {}
se interpretará no como un objeto, sino como un bloque de código vacío. Por lo tanto, la expresión se convierte a +[]
, y esto es 0
, porque +
antes de que el valor lo convierta en un número. Me gustaría señalar que si el código está escrito como console.log({} + []);
, entonces será [object Object]
, porque aquí {}
se interpretará como un objeto.
¿Cuál será el resultado?
[] + {};
a) 0
b) nulo
c) '[objeto objeto]'
d) NaN
Respuesta + análisisc) '[objeto objeto]'
Aquí, ambos operandos, de acuerdo con las reglas, se reducen a una cadena de una matriz vacía: esta es una cadena vacía y de un objeto [object Object]
¿Qué generará este código?
let response = { data: '', errors: { code: 403 } }; console.log(typeof response.data.link); a) undefined b) object c) string d) function
Respuesta + análisisd) función
El prototipo de cadena tiene un método de enlace , por lo que la respuesta correcta es la function
¿Qué generará este código?
const button = document.querySelector('button'); button.addEventListener('click', () => { console.log('FUS'); }); button.addEventListener('click', () => Promise.resolve('RO').then((x) => console.log(x))); button.addEventListener('click', () => { console.log('DAH!'); }); button.click(); a) FUS RO DAH! b) FUS DAH! RO c) RO FUS DAH! d) DAH! RO FUS
Respuesta + análisisb) FUS DAH! RO
Aquí activamos el click
programación, y se pone en la pila de llamadas, se activa el primer manejador (sacamos FUS
, llegamos al segundo) y agregamos RO
a la cola, porque click
todavía en la pila, no llame a promesa. Entramos en el siguiente controlador: ¡salida DAH!
. click
trabajado, la cola está vacía, se activa la promesa.
¿Qué mostrará este código cuando se haga clic en un botón?
const button = document.querySelector('button'); button.addEventListener('click', () => { console.log('FUS'); }); button.addEventListener('click', () => Promise.resolve('RO').then((x) => console.log(x))); button.addEventListener('click', () => { console.log('DAH!'); }); button.click(); a) FUS RO DAH! b) FUS DAH! RO c) RO FUS DAH! d) DAH! RO FUS
Respuesta + análisisa) FUS RO DAH!
Aquí el usuario hace clic en el botón, por lo que no hay click
en la pila, y en el segundo controlador, la promesa funcionará de inmediato.
¿Qué generará este código?
console.log(typeof Function````); a) TypeError b) SyntaxError c) 'function' d) 'undefined'
Respuesta + análisisd) 'indefinido'
Cuando se usan literales de plantilla después del nombre de la función, se llama con una matriz donde hay un valor pasado y una matriz con un valor sin raw
. Function
, lo mismo que la new Function
- constructor de funciones. Cuando le pasamos una cadena vacía, obtenemos una función de la forma (){}
, respectivamente, con cualquier argumento que lo llamemos, devolverá undefined
, aquí se llama con una matriz - ['', raw: ['']]
. Esto es más o menos lo mismo que Function('')('')
¿Qué generará este código?
function f(a, b, c) { 'use strict'; return f.length; } console.log(f(100, 2)); a) undefined b) 2 c) 3 d)
Respuesta + análisisc) 3
Descripción exhaustiva con MDN :
La propiedad de longitud es una propiedad de un objeto de función e indica cuántos argumentos espera la función, es decir, el número de parámetros formales. Esta cantidad no incluye parámetros residuales.
¿Cuál será el resultado?
const dict = {}; dict[[1]] = 2; dict[dict] = 3; dict[1 / 0] = 4; a) {'1': 2, '[object Object]': 3, 'Infinity': 4} b) Assignment to constant variable c) {'[1]': 2, 'dict': 3, '1/0': 4} d) {'1': 4, '[object Object]': 3}
Respuesta + análisisa) {'1': 2, '[objeto Objeto]': 3, 'Infinito': 4}
La Assignment to constant variable
errores Assignment to constant variable
no estará aquí porque const
no permite cambiar el enlace, pero puede modificar el objeto. Todas las claves de objeto deben ser cadenas, por lo que toString
se llama para cada una de ellas. La matriz se convierte en 1
, el objeto en [object Object]
, y cuando se divide por cero, Infinity
obtiene Infinity
.
¿Qué generará este código?
console.log(!![] > [], ![] == []); a) false false b) false true c) true true d) true false
Respuesta + análisisc) verdadero verdadero
Comparaciones > >= <= <
- causa una comparación aritmética, primero convertimos la matriz a un valor booleano y obtenemos verdadero, y luego obtenemos una comparación 1> 0, que obviamente da verdadero. En la segunda parte de la pregunta, convertimos el conjunto en false
, luego false
se false
en 0
, y el conjunto se convierte en primitivo, obtenemos una cadena vacía ''
, y son iguales.
Con esto concluye nuestro análisis, ¡gracias por su atención!