Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FUNDATEC 2025

ProgramaçãoLinguagens de programação
Código
qg477102
Banca
FUNDATEC
Órgão
Prefeitura de Lajeado - RS
Ano
2025
Nível
Superior
Cargo
Analista de Sistemas
Analise o seguinte trecho de código JavaScript:Q34.png 165×120O que será exibido na tela ao executar esse script e por quê?
  1. A"Diferentes!", pois os tipos são distintos.
  2. B"Diferentes!", pois os valores são comparados com coerção.
  3. C"Iguais!", pois o operador "==" compara apenas os valores.
  4. D"Iguais!", pois o operador "==" força igualdade de tipo e valor.
  5. EO código gerará erro de execução.
Revelar gabarito e comentário

GabaritoC — "Iguais!", pois o operador "==" compara apenas os valores.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Operadores de comparação em JavaScript: == vs ===

Gabarito: letra C. O operador == (igualdade abstrata) compara apenas os valores, realizando a coerção de tipo (conversão automática) quando os operandos são de tipos diferentes. Portanto, se o código compara um número e uma string com o mesmo valor numérico, o resultado é true e o script exibe "Iguais!". O operador === (igualdade estrita) é que compara valor e tipo, sem coerção.

O JavaScript é uma linguagem fracamente tipada, o que significa que as variáveis não têm um tipo fixo e o interpretador realiza conversões automáticas entre tipos em diversas operações. Essa característica é a base para o comportamento dos operadores de comparação. Existem dois operadores principais para verificar igualdade:

  • == (igualdade abstrata ou frouxa): compara os valores após aplicar a coerção de tipo. Se os tipos forem diferentes, o JavaScript tenta convertê-los para um tipo comum antes de comparar. Por exemplo, 5 == "5" retorna true, pois a string "5" é convertida para o número 5.

  • === (igualdade estrita ou identidade): compara os valores sem realizar coerção de tipo. Se os tipos forem diferentes, o resultado é false, mesmo que os valores sejam equivalentes. Por exemplo, 5 === "5" retorna false, pois um é número e o outro é string.

A coerção de tipo é o processo de converter um valor de um tipo para outro. No caso do ==, a coerção é implícita e segue regras específicas da linguagem. Por exemplo, ao comparar um número com uma string, a string é convertida para número. Ao comparar um booleano com qualquer outro tipo, o booleano é convertido para número (true vira 1 e false vira 0).

Exemplo prático:

let a = 10;
let b = "10";

console.log(a == b);  // true, pois "10" é convertido para o número 10
console.log(a === b); // false, pois os tipos são diferentes (number vs string)

A distinção entre == e === é um dos conceitos mais cobrados em provas de JavaScript, justamente por ser uma fonte comum de bugs. A banca explora a confusão entre os dois operadores, apresentando alternativas que misturam os conceitos de "comparar valores" e "comparar tipo e valor".

NÃO CAIA NESSA!

A banca troca o comportamento do == pelo do ===. A alternativa D afirma que o == "força igualdade de tipo e valor", o que é exatamente o que o === faz. O == apenas compara valores, com coerção de tipo. Lembre-se: == compara valores (com conversão), === compara valor e tipo (sem conversão).

Operadores de igualdade
  • 1== (igualdade abstrata)
    • Compara valores
    • Coerção de tipo
    • 5 == "5" → true
  • 2=== (igualdade estrita)
    • Compara valor e tipo
    • Sem coerção
    • 5 === "5" → false
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Afirma que o resultado é "Diferentes!" porque os tipos são distintos. Isso seria verdadeiro se o operador usado fosse ===, que não realiza coerção de tipo. Como o código usa ==, a coerção é aplicada e os valores são comparados, resultando em "Iguais!". A alternativa confunde o comportamento do == com o do ===.

Alternativa B — ❌ Incorreta

Afirma que o resultado é "Diferentes!" porque os valores são comparados com coerção. A primeira parte está correta (o == compara com coerção), mas a conclusão está errada. A coerção de tipo faz com que valores de tipos diferentes sejam convertidos para um tipo comum, e se os valores forem iguais, o resultado é true. Portanto, o script exibirá "Iguais!", não "Diferentes!".

Alternativa C — ✅ Correta ⟵ GABARITO

Esta é a alternativa correta. O operador == compara apenas os valores, aplicando a coerção de tipo quando necessário. Se os valores forem iguais, o resultado é true, e o script exibe "Iguais!". A alternativa descreve precisamente o comportamento do operador de igualdade abstrata.

Alternativa D — ❌ Incorreta

Afirma que o == "força igualdade de tipo e valor". Isso é incorreto. O operador que força a igualdade de tipo e valor é o === (igualdade estrita). O == não exige que os tipos sejam iguais; ele converte os tipos automaticamente para comparar os valores. A alternativa descreve o comportamento do ===, não do ==.

Alternativa E — ❌ Incorreta

Afirma que o código gerará erro de execução. Não há erro de execução ao comparar um número com uma string usando ==. O JavaScript é uma linguagem dinâmica e permite esse tipo de comparação, aplicando a coerção de tipo. O script executará normalmente e exibirá "Iguais!".

Gabarito: letra C

Link permanente: /questoes/qg477102