Questão nº 51
Questão de Tecnologia da Informação · FGV MP-SC 2022 (nº 51)
FGV2022Analista em Tecnologia da InformaçãoTecnologia da Informação
Gabarito: Bver comentário ↓
Analise o código JavaScript exibido a seguir.
```
var numeros = [4,9,16];
var xpto = numeros.map(function(num) {
return num << 2;
});
```
Após a execução desse trecho de código, os valores de numeros e xpto são, respectivamente:
- A```
undefined
[16,36,64]
``` - B```
[4,9,16]
[16,36,64]
``` (alternativa correta) - C```
null
[0,1,4]
``` - D```
[4,9,16]
Null
``` - E```
[16,36,64]
Undefined
```
Resposta comentada
Gabarito Alternativa B
O método .map() não altera o array original; ele cria um novo array com os resultados da função aplicada a cada elemento. O operador << (deslocamento à esquerda) multiplica o número por , onde é o valor à direita. Aqui, num << 2 equivale a num * 4.
- (A) Incorreta:
numerosnão viraundefined; o array original permanece intacto após.map(). - (B) Correta:
numeroscontinua[4,9,16](imutável) exptorecebe[16,36,64], pois , , . O<< 2é uma pegadinha visual: parece "shift" de bits, mas o resultado é exatamente a multiplicação por 4. - (C) Incorreta:
numerosnão viranull; e os valores calculados estão errados (não são[0,1,4]). - (D) Incorreta:
numerosestá correto, masxptonão éNull(null em JS é diferente deundefinede não é o retorno de.map()). - (E) Incorreta:
numerosnão é modificado para[16,36,64]; exptonão éUndefined(é um array válido). A armadilha aqui é achar que.map()altera o original, mas ele retorna um novo array.
Fonte: FGV MP-SC 2022 Analista em Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.