Questão nº 56

Questão de Informática · FGV TJTO 2022 (nº 56)

FGV2022Técnico Judiciário - InformáticaInformática
Gabarito: Dver comentário ↓

Considere o código JavaScript a seguir.

var x1
var x2
var x3
var y = 11
var z = 12
x1= z++ == ++y
x2= 10 + "casa"
x3= y+1 === z && 10 != "20"

Após a execução dessas operações, os valores de x1, x2 e x3 são, respectivamente:

Resposta comentada

Gabarito Alternativa D

Em JavaScript, é crucial entender como os operadores de incremento/decremento (++, --) funcionam (prefixo vs. postfixo) e como o JavaScript lida com a coerção de tipos (conversão automática de tipos) em operações como concatenação de strings e comparações.

  • Cálculo de x1:

    • var y = 11
    • var z = 12
    • x1 = z++ == ++y
    • Primeiro, z++ é avaliado: o valor atual de z (que é 12) é usado na comparação, e depois z é incrementado para 13.
    • Em seguida, ++y é avaliado: y é primeiro incrementado para 12, e depois seu novo valor (12) é usado na comparação.
    • A expressão se torna 12 == 12, que é true.
    • Portanto, x1 recebe o valor true.
    • Após esta linha, y é 12 e z é 13.
  • Cálculo de x2:

    • x2 = 10 + "casa"
    • Quando o operador + é usado com uma string e um número, o número é convertido para string e ocorre uma concatenação de strings.
    • "10" + "casa" resulta em "10casa".
    • Portanto, x2 recebe o valor "10casa".
  • Cálculo de x3:

    • x3 = y+1 === z && 10 != "20"
    • Lembre-se que y agora é 12 e z é 13.
    • Primeira parte: y+1 === z
      • y+1 é 12 + 1, que é 13.
      • 13 === 13 (comparação de igualdade estrita: verifica valor e tipo). Isso é true.
    • Segunda parte: 10 != "20"
      • != é o operador de desigualdade solta: ele tenta converter os tipos antes de comparar.
      • A string "20" é convertida para o número 20.
      • 10 != 20 é true.
    • Finalmente, true && true (operador lógico AND) resulta em true.
    • Portanto, x3 recebe o valor true.

Os valores finais são: x1 = true, x2 = "10casa", x3 = true.

(A) Incorreta: x1 é true, não false. A interpretação incorreta dos operadores de incremento (z++ e ++y) é a armadilha aqui.
(B) Incorreta: x1 é true, não false, e x3 é true, não false.
(C) Incorreta: x1 é true, não false, e x2 é "10casa", não undefined.
(D) Correta: x1 é true (devido à avaliação correta dos operadores de incremento), x2 é "10casa" (devido à concatenação de string), e x3 é true (devido à avaliação correta das comparações lógicas e dos valores atualizados de y e z).
(E) Incorreta: x2 é "10casa", não undefined.

Fonte: FGV TJTO 2022 Técnico Judiciário - Informática (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