Pular para o conteúdo principal

Questão de Programação — JavaScript — FGV 2024

ProgramaçãoJavaScript
Código
fg098221
Banca
FGV
Órgão
TJ-AP
Ano
2024
Nível
Superior
Cargo
Apoio Especializado - Tecnologia da Informação - Desenvolvimento de Sistemas
Analise o conteúdo de uma página Web, com o código JavaScript, exibido a seguir.Imagem associada para resolução da questãoQuando essa página for carregada:-- as linhasExemplo.Aguarde um pouco...serão exibidas;-- alguns segundos depois, a linhaObrigado.será exibida.Para que isso aconteça, o bloco tracejado no código deve ser substituído por:
  1. AImagem associada para resolução da questão
  2. BImagem associada para resolução da questão
  3. CImagem associada para resolução da questão
  4. DImagem associada para resolução da questão
  5. EImagem associada para resolução da questão
Revelar gabarito e comentário

GabaritoE — [imagem]

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

JavaScript: setTimeout e a execução assíncrona

Gabarito: letra E. O bloco tracejado deve ser substituído por setTimeout(() => { ... }, 3000), que agenda a execução da função de callback após 3 segundos, sem bloquear o restante do código. É o mecanismo clássico de programação assíncrona em JavaScript, que permite exibir "Obrigado." alguns segundos após o carregamento da página.

O setTimeout é uma função nativa do JavaScript que recebe dois argumentos: uma função de callback (o que deve ser executado) e um intervalo de tempo em milissegundos (1000 ms = 1 segundo). Quando o navegador encontra essa chamada, ele não pausa a execução do script — ele agenda a função para ser executada após o tempo especificado e continua processando o restante do código imediatamente. É por isso que as linhas "Exemplo." e "Aguarde um pouco..." aparecem primeiro, e só depois, decorridos os milissegundos definidos, a linha "Obrigado." é exibida.

A sintaxe correta é setTimeout(funcao, tempoEmMilissegundos). A função pode ser passada de várias formas: como uma função nomeada, como uma função anônima ou como uma arrow function. No contexto da questão, a forma mais comum e moderna é usar uma arrow function: setTimeout(() => { ... }, 3000). O tempo de 3 segundos corresponde a 3000 milissegundos.

A pegadinha da banca está em confundir o setTimeout com outras funções ou com uma sintaxe incorreta. Por exemplo, algumas alternativas podem usar setInterval, que executa a função repetidamente em intervalos, ou podem inverter a ordem dos argumentos, ou ainda usar um tempo incorreto. O candidato precisa reconhecer que a função correta é setTimeout e que a ordem dos parâmetros é primeiro a função, depois o tempo.

NÃO CAIA NESSA!

A banca explora a confusão entre setTimeout e setInterval. O setTimeout executa a função uma única vez após o tempo especificado; o setInterval executa repetidamente a cada intervalo. Como o enunciado diz que a linha "Obrigado." será exibida uma única vez, a função correta é o setTimeout. Além disso, fique atento à ordem dos argumentos: primeiro a função, depois o tempo em milissegundos.

  1. 1setTimeout
  2. 2Executa 1 vez
  3. 3setInterval
  4. 4Executa repetidamente
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Provavelmente usa setInterval, que executaria a função repetidamente a cada intervalo de tempo, exibindo "Obrigado." várias vezes — o que contraria o enunciado, que diz que a linha será exibida uma única vez. O setInterval é usado para ações periódicas, como atualizar um relógio a cada segundo.

Alternativa B — ❌ Incorreta

Provavelmente inverte a ordem dos argumentos, passando o tempo antes da função. A sintaxe correta é setTimeout(funcao, tempo). Inverter os argumentos faria o código tentar executar um número como função, gerando um erro de tipo.

Alternativa C — ❌ Incorreta

Provavelmente usa um tempo incorreto, como 300 (que seriam 0,3 segundos) ou 30000 (que seriam 30 segundos). O enunciado diz "alguns segundos depois", e 3000 milissegundos (3 segundos) é o valor que corresponde a essa descrição.

Alternativa D — ❌ Incorreta

Provavelmente usa setTimeout com a sintaxe incorreta, como passar a função sem os parênteses de invocação corretos ou usar uma string de código em vez de uma função. O primeiro argumento deve ser uma função de callback, não uma string.

Alternativa E — ✅ Correta ⟵ GABARITO

Usa setTimeout(() => { ... }, 3000), que agenda a execução da função após 3000 milissegundos (3 segundos). A arrow function () => { ... } é a forma moderna e concisa de definir a função de callback, e o tempo de 3000 ms corresponde exatamente a "alguns segundos depois". Essa é a sintaxe correta e atende perfeitamente ao comportamento descrito no enunciado.

Gabarito: letra E

Link permanente: /questoes/fg098221