DEV Community

Cover image for JavaScript fácil: Coerção de tipos
Pedro Tashima
Pedro Tashima

Posted on

JavaScript fácil: Coerção de tipos

Tipos de dados em Javascript

Em JavaScript a tipagem de dados é dinâmica, isso quer dizer que ao reservar um espaço na memória, não é necessário declarar para que tipo de dado aquele espaço será usado.
Ex: var minhaIdade = 18; Nesse caso, a variável contém um dado de tipo numérico, porém, diferente de Java ou C, é possível simplesmente atribuir outro tipo de dado sem nenhum problema. minhaIdade = "Não te interessa"; agora a variável minhaIdade contém um texto. Para uma explicação mais detalhada, recomendo a leitura deste texto.


A coerção

Responda a seguinte pergunta: Quanto é 345 + vermelho?
Ela não faz sentido, não? Lógico que não. vermelho não é um número. Para seu computador isso também não faz.
Quando uma operação não faz sentido, os valores são convertidos automaticamente para que passe a fazer. Isso é a coerção de tipos.
Ex:

  • Código:
var numeroExemplo = 345; //atribuindo um número
var palavraExemplo = 'vermelho'; //atribuindo um texto
var resultado = numeroExemplo + palavraExemplo; //somando o numero e o texto
console.log(resultado); //Mostrando no console o resultado
Enter fullscreen mode Exit fullscreen mode
  • Console:
>"345vermelho"
Enter fullscreen mode Exit fullscreen mode

Nesse exemplo, o número 345 foi convertido para o "texto" 345. Por mais estranho que isso possa parecer, é possível entender melhor com os próximos exemplos.

  • Código:
var numeroUm = 1; //declarando 1 como valor numérico
var palavraUm = '1'; //declarando 1 como um texto
var resultado = numeroUm + palavraUm; //somando as duas variáveis
console.log(resultado); //Mostrando no console o resultado
Enter fullscreen mode Exit fullscreen mode
  • Console:
>"11"
Enter fullscreen mode Exit fullscreen mode

Obviamente 1+1 é igual a 2, mas o console nos mostra 11. O que aconteceu? A variável palavraUm continha um texto e da mesma maneira que no exemplo anterior, então o computador transformou numeroUm também em um texto e concatenou os dois.

con·ca·te·nar

(latim concateno, -are)

verbo transitivo e pronominal

Estabelecer(-se) relação ou .sequência lógica entre ideias ou argumentos. = ENCADEAR, JUNTAR, LIGAR

Ou seja, ele juntou os textos, da mesma maneira que acontece se fizermos o seguinte:

  • Código:
var meuNome= 'Pedro'; //declarando um texto
var meuSobrenome= 'Tashima'; //declarando um texto
var resultado = numeroUm + palavraUm; //concatenando os textos
console.log(resultado); //Mostrando no console o resultado
Enter fullscreen mode Exit fullscreen mode
  • Console:
>"PedroTashima"
Enter fullscreen mode Exit fullscreen mode

Agora sim tudo voltou a fazer sentido, 1 + 1 ainda é 2 e você entende o conceito de coerção de tipos, mas para não passar vergonha falando que 1 + 0 é 10, você deveria ver os seguintes links para entender mais do assunto (e ver minhas referências também):

Oldest comments (0)