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étodo | Descriçã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/Para | String | Number | Boolean | Object | Undefined | Null |
String | – | String() | Boolean() | Object() | – | String() |
Number | Number() | – | Boolean() | Object() | ||
Boolean | String() | Number() | – | Object() | – | – |
Object | toString() | Number() | Boolean() | – | – | – |
Undefined | String() | NaN | false | TypeError | – | – |
Null | String() | 0 | false | Object() | – | – |
Comentários