Março 10, 2021

== vs === Por que nem tudo é igual (e menos em javascript)

Se você notou, nem todos os operadores iguais são iguais em javascript;). Em particular, estou falando de == (duplo igual) e === (igual igual). De fato, embora na aparência eles fazem coisas semelhantes, em muitos casos, eles se comportam de forma completamente diferente. A boa gestão desses dois operadores é essencial para um bom desenvolvimento e não incorporar erros indesejados. Mas ei, vamos ver o que tudo isso é!

duplo igual (==)

Quando em nosso código queremos comparar duas variáveis, podemos usar este operador para verificar se esses Duas variáveis são iguais, mas … Cuidado! Porque se as duas variáveis que queremos comparar são de diferentes tipos, o comportamento do nosso código pode se tornar “estranho”.

para entender um pouco melhor a explicação , consertar meu post de digitação dinâmica.

Como você saberá (pelo menos depois de ler o post dinâmico de digitação), o JavaScript é dinâmico digitando e que leva ao motor aplicar a coerção para transformar uma variável de um tipo para outro . Muitas vezes essa transformação não é o que esperamos, posso parecer muito ao usar o operador “==”.

Basicamente, o operador == O que ele faz é comparar 2 valores, mas ele não é Verificando o tipo das variáveis.

Duplo operador igual (==): compare 2 valores, mas ele faz sem verificar o tipo de variáveis

Com isso, quero dizer o seguinte: Se, por exemplo, eu tenho uma variável que é numérica e vale 1 e eu tenho uma variável de string que vale a pena “1”, quando comparada com este operador , a resposta dará verdade:

var a = 1;var b = '1'if (a == b) { console.log('son iguales')} else { console.log('son diferentes')}

Esta imprime na tela “é o mesmo”, sim, exato, mesmo que sejam tipos diferentes; Como JavaScript converte as duas variáveis para o mesmo tipo usando coerção, essas duas variáveis acabam sendo a mesma.

coerção: Converta o valor de uma variável de um tipo para outro, para Exemplo Convertendo o valor ‘1’ (tipo de string) para numérico, resultaria no valor 1 (do tipo numérico)

Mas o que acontece se compararmos o valor falso Com o número zero?

var a = false;var b = 0;if (a == b) { console.log('son iguales')} else { console.log('son diferentes')}

Isto também imprime na tela ‘são os mesmos’. E por que? Porque quando JavaScript converte 0 (zero) para booleano, para o motor JavaScript, 0 (zero) torna-se falso, então ela se pergunta se o falso é igual a false e a condição retorna a impressão verdadeira na tela ‘são iguais’.

é mais um caso, mostrando o seguinte na tela?

var a = '';var b = 0;if (a == b) { console.log('son iguales')} else { console.log('son diferentes')}

Isso também imprime “são os mesmos” albeit 0 e a seqüência vazia “são Muito diferente, uma vez que, para a variável “A”, cujo valor é uma corda vazia, ao convertê-la a um valor numérico, é igual a 0 (zero).

e como faço quando eu quero Compare tendo em conta também o tipo da variável?

Você está presenteado!, Usando o mesmo operador triplo (===)

Triple igual (===)

Nas contas resumidas, o triplo verifica igualmente o conteúdo da variável e também, verifique se as duas variáveis são do mesmo tipo. É por isso que é dito que é mais seguro do que o == (duplo igual).

operador triplo igual (===): Verifique o conteúdo do vari e também, verifique se as duas variáveis são do mesmo tipo.

Retornando ao exemplo anterior:

var a = 1;var b = '1';if (a === b) { console.log('son iguales')} else { console.log('son diferentes')}

Neste caso, como “A” e “B” não são do mesmo tipo, é impresso no console ‘são diferentes’.

var a = false;var b = 0;if (a === b) { console.log('son iguales')} else { console.log('son diferentes')}

também é exibido no console ‘são diferentes’, já que “a” do tipo booleano e “b” do tipo numérico são tipos diferentes.

Por fim :

var a = '';var b = 0;if (a === b) { console.log('son iguales')} else { console.log('son diferentes')}

Como você pode supor, também imprime no console ‘são diferentes’.

Conclusão

Como você pode ver, há uma grande diferença entre usar == e ===, na verdade, seu uso indevido pode levar a insetos indesejados. Portanto, na dúvida, use sempre === e você economizará mais de dor de cabeça.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *