Conversão de tipos em JavaScript


Type Conversion, ou Typecasting, refere-se à mudança de um tipo de dado para outro. A conversão implícita ocorre quando o compilador ou o tempo de execução automaticamente transformam os tipos de dados. Além disso, o código fonte pode explicitamente demandar uma conversão para acontecer.

Conversão de uma String para Number

O método global Number() converte uma variável (ou um valor) em um número.

Uma string numérica (como “3.14”) é convertida em um número (como 3.14).

Uma string vazia (como “”) é convertida em 0.

Uma string não numérica (como “John”) se converte em NaN.

Number("3.14")
Number(Math.PI)
Number("")
Number("")

Métodos Numéricos

MétodoDescrição
Number()Retorna um Number, convertido do seu argumento
parseFloat()Analisa uma string e retorna um número de ponto flutuante
parseInt()Analisa uma string e retorna um número inteiro

Conversão de Números em Strings

O método toString() é o método interno de um objeto Number que permite a mudança de qualquer valor do tipo Number para um tipo String.

Para utilizar é fácil, basta chamar o método em um valor do tipo Number.

let num = 15;
var str = num.toString();
console.log(num); // 15
console.log(str); // "15"

Sistema que são válidos para a conversão:

  • Sistema binário (de base 2), que têm dois algarismos – 0 e 1
  • Sistema ternário (de base 3), que têm três algarismos – 0, 1 e 2
  • Sistema quaternário (de base 4), que têm quatro algarismos – 0, 1, 2 e 3
  • E assim por diante até o sistema Hexatridecimal (de base 36), que tem a combinação dos números arábicos (de 0 a 9) com as letras latinas de A até Z

Utilizando o método toString(), podemos fazer também a conversão de um número decimal para obter um valor em binário.

Da seguinte maneira:

var str = (5).toString(2);
console.log(str); // "101"

Assim como podemos fazer a utilização de parâmetros radix:

Number.toString(radix);

O parâmetro “radix” refere-se à base númerica utilizada na interpretação de uma string como um número inteiro.

Por padrão, o método toString() converte um número para sua representação em base 10. No entanto, você pode usar o parâmetro para converter o número em uma base diferente.


let numero = 10;
console.log(numero.toString()); // Saída: "10" (em base 10)
console.log(numero.toString(2)); // Saída: "1010" (em base 2, binária)
console.log(numero.toString(8)); // Saída: "12" (em base 8, octal)
console.log(numero.toString(16)); // Saída: "a" (em base 16, hexadecimal)

Também podemos converter uma Array para uma String utilizando o método:

let arr = [ "Tok", "Digital" ];
let str = arr.toString();

console.log(str); // "Tok,Digital"

Tal como booleanos:

let bool = true;
let str = bool.toString();

console.log(str); // "true"

O Operador Unary

Um operador unário trabalha em um operando e são eles:

Unário Mais + 
que converte um operando em um número.

let a = 10;
a = +a; // 10

Unário Menos - 
que converte um operando em um número e nega o valor depois dele.

let a = 10;
a = -a; // -10

Se o valor é um número, o operador unário plus não causa efeito algum, no entanto o operador unário minus torna o valor negativo.

Caso você aplique os operadores unários plus ou o minus em um valor não numérico, ele realiza a mesma conversão que a função Number().

let s = "10";
console.log(+s); // 10

Nesse exemplo, s é uma string. Entretanto, quando colocamos o operador unário plus na frente dele, a string s é convertida em um número.

A seguir podemos ver que o operador unário converte valores booleanos em números, false em 0 e true em 1.

let verdadeiro = true;
let falso = false;
console.log(+verdadeiro); // 1
console.log(+falso); // 0

Operadores de incremento e decremento

Inspirado na linguagem de programação C, o conceito de incremento possui um significado sugestivo: aumentar um valor existente em 1 unidade. Da mesma forma, o decremento realiza o oposto, diminuindo o valor em 1 unidade. Esses operadores podem ser aplicados como prefixos ou sufixos, e sua escolha afeta o momento em que a operação é realizada em relação à avaliação da expressão.

Incremento prefixo e sufixo ++
que adiciona um ao seu operando.

let inc = 9;
++inc;
console.log(inc); // 10

No exemplo acima o operador de incremento como prefixo adiciona sobre o valor de inc, 1 unidade a mais.

Decremento prefixo e sufixo -- 
que subtrai um do seu operando.

let dec = 10;
--dec;
console.log(dec); // 9


O incremento e decremento agora atuando como sufixo funciona da mesma maneira que utilizado como prefixo. A única diferença é que ao invés da operação ser executada depois da resolução, utilizando o sufixo, a operação é executada antes mesmo da resolução.

Prefixo:

let i = 10, j = 20;
let op = i-- + j;
console.log(op); // 30
console.log(op); // 9

Sufixo:

i = 10;
let op = --i + j;
console.log(op); // 29
console.log(i); // 9

Quando você usa o operador de incremento ou decremento como sufixo (i-- ou i++), a operação é realizada após a resolução da expressão. Isso significa que, no caso de i--, o valor de i é usado na expressão, e então i é decrementado.

console.log(op); // 30 
console.log(op); // 9

Por outro lado, quando você usa o operador como prefixo (--i ou ++i), a operação é realizada antes da resolução da expressão. Portanto, no caso de --i, i é primeiro decrementado e, em seguida, o valor de i decrementado é usado na expressão.

console.log(op); // 29 
console.log(i); // 9

Tabela de Conversão de Tipos JavaScript

De/ParaStringNumberBooleanObjectUndefinedNull
StringString()Boolean()Object()String()
NumberNumber()Boolean()Object()
BooleanString()Number()Object()
ObjecttoString()Number()Boolean()
UndefinedString()NaNfalseTypeError
NullString()0falseObject()
Tabela de Conversão de Tipos JavaScript

Adicionar um comentário