Qual a diferença de = == e === em JavaScript
Neste artigo você vai aprender qual a diferença de = == e === em JavaScript, a partir de uma explicação prática e sucinta
Resumo rápido dos três: o = atribui um valor a uma variável (const nome = "Matheus")
O == compara dois valores fazendo coerção de tipo antes, por isso 1 == "1" retorna true
O === compara valor E tipo sem coerção nenhuma, por isso 1 === "1" retorna false
Na dúvida, use === como padrão

Fala programador(a), beleza? Bora aprender mais sobre os operadores de JavaScript!
Primeiramente temos que separar algumas coisas, o operador de igual tem uma categoria diferente dos operadores == e ===
Eles são separados em:
- Atribuição: que é o caso do =
- Comparação: que é o caso de == e ===
O de atribuição é mais simples de entender, pois basicamente permite que um valor seja atribuído a uma variável, por exemplo
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Então veja um exemplo onde utilizamos o operador de atribuição:
const name = "Matheus" console.log(name) // Matheus
Aqui estamos criando uma variável e atribuindo o valor de Matheus a ela
Ou seja, esta é a função do operador de igual
Um dos erros dos iniciantes de programação é confundir este operador com o da matemática que vemos na escola, que geralmente identifica a igualdade entre dois valores
Operador == e ===
Já os operadores == e === tem como função comparar valores
Comparações retornam um booleano, true ou false
Ou seja, quando os utilizamos estamos procurando validar algo
A grande diferença ocorre no ===, onde o tipo de dado é comparado também
Então podemos ter resultados diferentes com operações quase iguais, veja:
console.log(1 == "1") // true console.log(1 === "1") // false
Esta pequena diferença pode gerar grandes dores de cabeça ao seu software
Por isso, procure sempre utilizar ===, ele vai garantir que as operações sempre tenham o resultado correto
Mesmo que este não seja o que você está esperando 🙂
Conclusão
Neste artigo você aprendeu a diferença de = == e === em JavaScript
Temos que:
- = é um operador de atribuição, ele coloca valores em variávies;
- == é operador de comparação, que verificar se dois valores são iguais;
- === é também um operador de comparação, porém compara os tipos dos valores e também os valores;
Confira nossos cursos gratuitos no Youtube, com vídeos todos os dias! Se inscreva e ative o sininho para receber as notificações e aprender mais ainda sobre desenvolvimento web!
Veja também nosso catálogo de cursos na Udemy, todos com exercícios e projetos práticos, nas mais diversas tecnologias. O link acima contém um cupom de desconto para os cursos
Uma explicação curta do PORQUÊ o 1 == "1" dá true: o == faz coerção de tipo, ou seja, ele converte a string "1" para número antes de comparar, então sobra 1 == 1 e o resultado é true
Já o === é o operador de igualdade estrita
Ele não coage nada, compara o valor E o tipo ao mesmo tempo
Como um é number e o outro é string, o 1 === "1" já cai fora e volta false, sem nem olhar o valor
Um caso legítimo de == que quase ninguém conta
O padrão x == null pega null OU undefined de uma vez só, porque o == trata os dois como equivalentes
É tão usado que o próprio ESLint, na regra eqeqeq (que força === e !==), tem uma opção pra liberar essa exceção: { "null": "ignore" }
Ou seja, a recomendação da comunidade é usar === como padrão, e abrir mão dele só no x == null quando tu quer checar null e undefined juntos
Não tenho material próprio testado especificamente sobre == e ===: o vídeo disponível é sobre diferença entre datas, outro assunto. Pra escrever um bloco de primeira mão honesto aqui, o certo seria abrir o console do navegador e rodar os casos lado a lado (1 == "1", 1 === "1", 0 == "", x == null com variável indefinida) mostrando o retorno de cada um. Sem essa rodada real, não afirmo experiência que não tive
Perguntas frequentes
Qual a diferença entre == e === em JavaScript?
O == é o operador de igualdade frouxa: ele faz coerção de tipo antes de comparar, então converte os valores pro mesmo tipo e só depois checa
O === é o operador de igualdade estrita: ele compara o valor E o tipo juntos, sem converter nada
Por isso 1 == "1" volta true (a string vira número), mas 1 === "1" volta false (number e string são tipos diferentes)
1 == "1" é true ou false em JavaScript?
1 == "1" é true, porque o == coage a string "1" para número antes de comparar
Já 1 === "1" é false, porque o === exige mesmo tipo e valor, e aqui os tipos são diferentes (number vs string)
Devo sempre usar === no lugar de ==?
Como regra geral sim, o === evita surpresas de coerção de tipo e deixa a comparação previsível
A regra eqeqeq do ESLint inclusive força o uso de === e !==
A exceção mais comum é o x == null, que checa null e undefined de uma vez: a própria regra do ESLint tem a opção { "null": "ignore" } pra liberar esse caso
Leia também
Formações
Formação SAAS com IA
Tire usas ideias do papel criando softwares com IA, integre pagamentos e lance seu projeto!
- 291 aulas
- 18 projetos
- 24h 17min
Blog | Mais populares
As diferenças de var, let e const
Como fazer redirecionamento com PHP
Neste artigo você vai aprender a como fazer redirecionamento com PHP, utilizaremos abordagens fáceis de entender e de aplicar Fala programador(a), beleza? Bora aprender mais […]
ChatGPT: o que é, como usar, dicas e como acessar login
ChatGPT é uma ferramenta de processamento de linguagem natural (NLP) baseada na arquitetura GPT-3.5, desenvolvida pela OpenAI. Sua criação representa um marco significativo no campo […]
