Olá, esta é a última parte da análise de perguntas do nosso estande.
Reaja às perguntas aqui .
Análise das quatro primeiras rodadas aqui .

Aqui, questões sobre tópicos praticamente não são agrupadas, analisamos tudo um por um.
Vamos lá:
Qual será o resultado?
let i = 0; let a = 1; for (; a >= 0; i++) { a -= 0.1; } console.log(i); a) 1 b) 11 c) d) 10
Resposta + análiseb) 11
Tudo é bem simples aqui. Isso é mais uma questão de atenção plena. O ciclo será executado 11 vezes, porque nós não somos rigorosos
maior que >
e maior que ou igual a >=
.
Qual será o resultado?
{} + []; a) 0 b) null c) '[object Object]' d) NaN
Resposta + análisea) 0
O truque aqui é que {}
será interpretado não como um objeto, mas como um bloco de código vazio. Portanto, a expressão é convertida em +[]
e é 0
, porque +
antes que o valor o converta em um número. Gostaria de observar que, se o código for escrito como console.log({} + []);
, então será [object Object]
, porque aqui {}
será interpretado como um objeto.
Qual será o resultado?
[] + {};
a) 0
b) nulo
c) '[objeto Objeto]'
d) NaN
Resposta + análisec) '[objeto Objeto]'
Aqui, os dois operandos são, de acordo com as regras, reduzidos a uma sequência de uma matriz vazia - esta é uma sequência vazia e de um objeto [object Object]
O que esse código produzirá?
let response = { data: '', errors: { code: 403 } }; console.log(typeof response.data.link); a) undefined b) object c) string d) function
Resposta + análised) função
O protótipo de string possui um método de link , portanto, a resposta correta é function
O que esse código produzirá?
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
Resposta + análiseb) FUS DAH! RO
Aqui, acionamos o click
programaticamente, e ele entra na pilha de chamadas, o primeiro manipulador é acionado - produzimos FUS
, chegamos ao segundo - adicionamos RO
à fila, porque click
ainda na pilha - não chame de promessa. Entramos no próximo manipulador - saída DAH!
. click
funcionou, a fila está vazia, a promessa é acionada.
O que esse código será exibido quando um botão for clicado?
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
Resposta + análisea) FUS RO DAH!
Aqui o usuário clica no botão, para que não haja um click
na pilha e, no segundo manipulador, a promessa funcionará imediatamente.
O que esse código produzirá?
console.log(typeof Function````); a) TypeError b) SyntaxError c) 'function' d) 'undefined'
Resposta + análised) 'indefinido'
Ao usar literais de modelo após o nome da função, ela é chamada com uma matriz, na qual existe um valor passado e uma matriz com um valor raw
. Function
, o mesmo que o new Function
- construtor de funções. Ao passar uma string vazia para ela, obtemos uma função do formulário (){}
, respectivamente, com qualquer argumento que a chamarmos, ela retornará undefined
, aqui é chamada com uma matriz - ['', raw: ['']]
. Isso é aproximadamente o mesmo que Function('')('')
O que esse código produzirá?
function f(a, b, c) { 'use strict'; return f.length; } console.log(f(100, 2)); a) undefined b) 2 c) 3 d)
Resposta + análisec) 3
Descrição exaustiva com MDN :
A propriedade length é uma propriedade de um objeto de função e indica quantos argumentos a função espera, ou seja, o número de parâmetros formais. Este valor não inclui parâmetros residuais.
Qual será o 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}
Resposta + análisea) {'1': 2, '[objeto Objeto]': 3, 'Infinito': 4}
A Assignment to constant variable
erros Assignment to constant variable
não estará aqui porque const
não permite alterar o link, mas você pode modificar o objeto. Todas as chaves de objeto devem ser cadeias de caracteres; portanto, toString
é chamado para cada uma delas. A matriz é convertida em 1
, o objeto em [object Object]
e, quando dividido por zero, o Infinity
obtido.
O que esse código produzirá?
console.log(!![] > [], ![] == []); a) false false b) false true c) true true d) true false
Resposta + análisec) verdadeiro verdadeiro
Comparações > >= <= <
- causam uma comparação aritmética, primeiro convertemos a matriz em um valor booleano e obtemos true, e depois obtemos uma comparação 1> 0, que obviamente fornece true. Na segunda parte da pergunta, convertemos o array em false
, depois false
é false
em 0
, e o array é convertido em um primitivo, obtemos uma string vazia ''
, e eles são iguais.
Isso conclui nossa análise, obrigado por sua atenção!