← Questões de Programação

Programação · FGV · 2021

Questão comentada de Programação

Considere o código JavaScript exibido logo abaixo. var x1 = 16; var x2 = "16"; var x3 = [1,2,3]; Usando as definições acima, analise as expressões a seguir. x3[0] == 1 x1 == x2 x1 === x2 true == x1 true == x3[0] Respectivamente, os valores retornados pelas expressões acima são:

Gabarito: D

Em JavaScript, a comparação pode ser feita de dois jeitos: com == e com ===. O operador == faz conversão automática de tipos antes de comparar, então ele pode transformar texto em número, booleano em número e por aí vai. Já o === é o mais exigente: compara valor e tipo ao mesmo tempo, sem “ajudinhas”. No enunciado, x1 vale 16, x2 vale "16" e x3 é um vetor com o primeiro elemento igual a 1. Então x3[0] == 1 resulta em true, porque o elemento realmente é 1. Depois, x1 == x2 também dá true, pois o JavaScript converte a string "16" para número na comparação frouxa. Já x1 === x2 dá false, porque 16 é number e "16" é string, e no === o tipo importa. Em true == x1, o booleano true vira 1, então a comparação fica 1 == 16, que é false. Por fim, true == x3[0] vira 1 == 1, logo dá true. Assim, a sequência correta é true, true, false, false, true, exatamente o que aparece na alternativa D. Em prova, o truque clássico é esse: o == “conserta” tipos, o === não perdoa nem com café.

Continue treinando

Questões relacionadas