Questão nº 45

Questão de Tecnologia da Informação · FGV TJ-SE Servidor 2023 (nº 45)

FGV2023Analista Judiciário - Análise de Sistemas - Web DesignerTecnologia da Informação
Gabarito: Dver comentário ↓

Considere o script JavaScript a seguir.

let x = 16;
let y = [];
y[2] = x;
y[2] %= 3;
y[0] = x<<2;
y[1] = x <<= 5;
alert(y);

A execução desse script exibe:

Resposta comentada

Gabarito Alternativa D

Em JavaScript, entender como os operadores de atribuição compostos (op=) funcionam é essencial, pois eles não apenas realizam uma operação, mas também modificam a variável original, ao contrário de operadores simples que apenas retornam um valor.

(A) Incorreta: Os cálculos para os elementos do array y não resultam nesses valores.
(B) Incorreta: Os valores de y[0] e y[2] estão incorretos de acordo com as operações.
(C) Incorreta: O valor de y[1] não é um booleano (true), e os outros valores também não correspondem aos cálculos.
(D) Correta: Vamos rastrear o script passo a passo:

  1. let x = 16; -> x é 16.
  2. let y = []; -> y é um array vazio.
  3. y[2] = x; -> y se torna [empty, empty, 16].
  4. y[2] %= 3; -> Isso é o mesmo que y[2] = y[2] % 3;. Então, y[2] = 16 % 3; que resulta em 1. y agora é [empty, empty, 1].
  5. y[0] = x<<2; -> O operador << (deslocamento bit a bit para a esquerda) multiplica o valor por 2n2^n, onde nn é o número de deslocamentos. 16 << 2 é 16 * 2^2 = 16 * 4 = 64. Importante: Esta operação não altera o valor de x. x continua sendo 16. y[0] se torna 64. y agora é [64, empty, 1].
  6. y[1] = x <<= 5; -> Este é um operador de atribuição composto. Ele significa x = x << 5; e o resultado dessa atribuição é então atribuído a y[1].
    • Primeiro, x << 5 é calculado: 16 * 2^5 = 16 * 32 = 512.
    • Em seguida, x é atualizado para 512.
    • Finalmente, y[1] recebe o novo valor de x, que é 512.
    • Armadilha: Muitos podem esquecer que x é modificado por <<= e usar o valor original de x (16) para o cálculo de y[1], ou não entender que o valor atribuído a y[1] é o resultado da atribuição a x.
    • y agora é [64, 512, 1].
  7. alert(y); -> Quando um array é passado para alert(), ele é convertido para uma string, unindo seus elementos com vírgulas. O resultado é "64,512,1".
    (E) Incorreta: Os valores calculados para os elementos do array y não correspondem a esta sequência.

Fonte: FGV TJ-SE Servidor 2023 Analista Judiciário - Análise de Sistemas - Web Designer (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho