Questão nº 45
Questão de Tecnologia da Informação · FGV TJ-SE Servidor 2023 (nº 45)
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:
- A0,128,1
- B2,512,32
- C64,true,1
- D64,512,1 (alternativa correta)
- E128,64,2
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:
let x = 16;->xé16.let y = [];->yé um array vazio.y[2] = x;->yse torna[empty, empty, 16].y[2] %= 3;-> Isso é o mesmo quey[2] = y[2] % 3;. Então,y[2] = 16 % 3;que resulta em1.yagora é[empty, empty, 1].y[0] = x<<2;-> O operador<<(deslocamento bit a bit para a esquerda) multiplica o valor por , onde é o número de deslocamentos.16 << 2é16 * 2^2 = 16 * 4 = 64. Importante: Esta operação não altera o valor dex.xcontinua sendo16.y[0]se torna64.yagora é[64, empty, 1].y[1] = x <<= 5;-> Este é um operador de atribuição composto. Ele significax = x << 5;e o resultado dessa atribuição é então atribuído ay[1].- Primeiro,
x << 5é calculado:16 * 2^5 = 16 * 32 = 512. - Em seguida,
xé atualizado para512. - Finalmente,
y[1]recebe o novo valor dex, que é512. - Armadilha: Muitos podem esquecer que
xé modificado por<<=e usar o valor original dex(16) para o cálculo dey[1], ou não entender que o valor atribuído ay[1]é o resultado da atribuição ax. yagora é[64, 512, 1].
- Primeiro,
alert(y);-> Quando um array é passado paraalert(), 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 arrayynã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.