DEV Community

Altencir Junior
Altencir Junior

Posted on

Entendendo comparações de igualdade estrita e suave no JavaScript.

Escrevendo um código, podemos declarar alguma variável que recebe um determinado parâmetro. Mas já aconteceu o caso de fazer uma declaração e acontecer um erro , e que não está na falta de dependências ou um erro do próprio código? Bem, talvez esteja, porém não da forma esperada.

O que pode ser, na verdade é um erro de lógica em alguma declaração feita, uma redundância no seu código,nas comparações de igualdade. Os Operadores de comparação são usados para analisar uma igualdade ou diferença entre variáveis ou valores.

Existem dois tipos de comparações de igualdade: comparações de igualdade estrita (===) e comparações de igualdade suave (==). A comparação de igualdade estrita compara tanto o valor quanto o tipo dos operandos, enquanto que a comparação de igualdade suave compara somente o valor dos operandos.

let x = 5;
let y = "5";

console.log(x === y); // false
console.log(x == y); // true
Enter fullscreen mode Exit fullscreen mode

O caso de comparação == analisa só o valor:5, que está true . Mas o valor de Y está posto como string, com isso o === que analisa não só o valor, mas o tipo declara o resultado como false.

const string1 = "hello";
const string2 = String("hello");
const string3 = new String("hello");
const string4 = new String("hello");

console.log(string1 == string2); // true
console.log(string1 == string3); // true
console.log(string2 == string3); // true
console.log(string3 == string4); // false
console.log(string4 == string4); // true
Enter fullscreen mode Exit fullscreen mode

No caso abaixo a string3 está reservando um espaço na memória, assim como a string4. Tanto em igualdade suave e estrita, não seria possível. APENAS se as comparações fossem com string2 e 3, onde se seria analisado o que essa string reserva numa variável, seria possível determinar os dois valores como true.

A importância de saber a diferença entre os dois é impedir que código termine em um erro de lógica, e ao mesmo tempo

Top comments (0)