0Pricing
JavaScript Academy · Aula

Igualdade flexível versus estrita

Entenda as comparações entre == e ===.

Igualdade flexível versus estrita é uma aula grátis de JavaScript Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de JavaScript Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de JavaScript Academy inclui 4 aulas no total.

Dois operadores de igualdade

JavaScript tem dois operadores de igualdade. A igualdade estrita (três sinais de igual) compara sem conversão. A igualdade não estrita (dois sinais de igual) converte os tipos antes de comparar.

console.log(1 === 1)
console.log(1 == "1")

Igualdade estrita

A igualdade estrita retorna verdadeiro apenas quando o tipo e o valor são iguais. Nenhuma conversão implícita ocorre.

console.log(5 === 5)
console.log(5 === "5")
console.log(true === 1)

A igualdade não estrita converte

A igualdade não estrita tenta converter os operandos para um tipo comum antes de comparar, o que pode produzir resultados verdadeiros surpreendentes.

console.log(5 == "5")
console.log(true == 1)
console.log(0 == false)

Número e texto

Ao comparar um número e um texto com igualdade não estrita, o texto é convertido primeiro para um número.

console.log("10" == 10)
console.log("10" === 10)

Conversão booleana

Com a igualdade não estrita, um booleano é convertido para um número; assim, verdadeiro se torna 1 e falso se torna 0 antes da comparação.

console.log(true == 1)
console.log(false == 0)
console.log(true == 2)

Nulo e indefinido

A igualdade não estrita considera nulo e indefinido iguais entre si, mas não iguais a qualquer outra coisa, como zero.

console.log(null == undefined)
console.log(null === undefined)
console.log(null == 0)

A exceção do NaN

NaN não é igual a nada, nem a si mesmo, sob nenhum dos dois operadores. Use Number.isNaN para testá-lo.

console.log(NaN === NaN)
console.log(NaN == NaN)
console.log(Number.isNaN(NaN))

Referências de objetos

Os objetos são comparados por referência, não pelo conteúdo. Dois objetos distintos com propriedades idênticas nunca são iguais.

const a = { x: 1 }
const b = { x: 1 }
console.log(a === b)
console.log(a === a)

Resultados surpreendentes da igualdade não estrita

A igualdade não estrita pode produzir resultados contraintuitivos. Um texto vazio é igual a zero, e um vetor vazio é igual a falso após a conversão.

console.log("" == 0)
console.log([] == false)
console.log("0" == false)

Prefira a igualdade estrita

A maioria dos guias de estilo recomenda usar a igualdade estrita por padrão para evitar erros causados por conversões implícitas ocultas. Recorra à igualdade não estrita apenas quando houver um motivo intencional.

const value = "42"
if (value === "42") {
  console.log("matched as string")
}

Verificando nulo ou indefinido

Um uso aceito da igualdade não estrita é verificar nulo ou indefinido em conjunto, pois o padrão de igualdade dupla para nulo abrange ambos.

function check(v) {
  if (v == null) {
    return "missing"
  }
  return "present"
}
console.log(check(undefined))
console.log(check(0))

Verificação rápida

Teste seus conhecimentos sobre igualdade.

Recapitulação

Recapitulação: Três sinais de igual evitam conversões implícitas; dois sinais de igual as aplicam.

  • A igualdade estrita verifica tipo e valor
  • A igualdade não estrita converte primeiro para um tipo comum
  • Na igualdade não estrita, nulo só é igual a indefinido
  • Prefira a igualdade estrita por padrão
console.log(1 === 1)
console.log(1 == "1")

Perguntas Frequentes

A aula “Igualdade flexível versus estrita” é grátis?

Sim — o texto completo de “Igualdade flexível versus estrita” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de JavaScript Academy, atualize para CoddyKit PRO. O curso de JavaScript Academy inclui 4 aulas no total.

O que vou aprender em “Igualdade flexível versus estrita”?

Entenda as comparações entre == e ===. Você pratica JavaScript Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar JavaScript Academy?

Nenhuma experiência prévia é necessária. JavaScript Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Igualdade flexível versus estrita”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de JavaScript Academy?

Sim. Cada aula de JavaScript Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Valores truthy e falsy
  2. Igualdade flexível versus estrita
  3. Coerção implícita em operações
  4. Técnicas de conversão explícita
← Voltar para JavaScript Academy