Na maioria das vezes, operadores e funções convertem automaticamente os valores fornecidos a eles para o tipo correto.
Por exemplo, alert
converte automaticamente qualquer valor em uma string para mostrá-lo. As operações matemáticas convertem valores em números.
Também há casos em que precisamos converter explicitamente um valor para o tipo esperado.
Ainda não estou falando sobre objetos
Neste capítulo, não cobriremos objetos. Por enquanto, falaremos apenas sobre primitivos.
Mais tarde, depois de aprendermos sobre objetos, no capítulo Conversão de objeto em primitivo veremos como os objetos se encaixam.
A conversão de string acontece quando precisamos da forma de string de um valor.
Por exemplo, alert(value)
faz isso para mostrar o valor.
Também podemos chamar a função String(value)
para converter um valor em uma string:
deixe valor = verdadeiro; alerta(tipo de valor); // booleano valor = String(valor); // agora o valor é uma string "true" alerta(tipo de valor); // corda
A conversão de string é principalmente óbvia. Um false
se torna "false"
, null
se torna "null"
, etc.
A conversão numérica em funções e expressões matemáticas acontece automaticamente.
Por exemplo, quando a divisão /
é aplicada a não números:
alerta("6"/"2"); // 3, strings são convertidas em números
Podemos usar a função Number(value)
para converter explicitamente um value
em um número:
deixe str = "123"; alerta(tipo de str); // corda deixe num = Número (str); // se torna um número 123 alerta(tipo de num); // número
A conversão explícita geralmente é necessária quando lemos um valor de uma fonte baseada em string, como um formulário de texto, mas esperamos que um número seja inserido.
Se a string não for um número válido, o resultado dessa conversão será NaN
. Por exemplo:
let age = Number("uma string arbitrária em vez de um número"); alerta(idade); //NaN, falha na conversão
Regras de conversão numérica:
Valor | Torna-se… |
---|---|
undefined | NaN |
null | 0 |
true and false | 1 e 0 |
string | Espaços em branco (inclui espaços, tabulações t , novas linhas n etc.) do início e do fim são removidos. Se a string restante estiver vazia, o resultado será 0 . Caso contrário, o número é “lido” na string. Um erro dá NaN . |
Exemplos:
alerta(Número("123")); //123 alerta(Número("123z") ); // NaN (erro ao ler um número em "z") alerta(Número(verdadeiro)); //1 alerta(Número(falso)); //0
Observe que null
e undefined
se comportam de maneira diferente aqui: null
se torna zero enquanto undefined
se torna NaN
.
A maioria dos operadores matemáticos também realiza essa conversão, veremos isso no próximo capítulo.
A conversão booleana é a mais simples.
Isso acontece em operações lógicas (mais tarde conheceremos testes de condição e outras coisas semelhantes), mas também pode ser executado explicitamente com uma chamada para Boolean(value)
.
A regra de conversão:
Valores que são intuitivamente “vazios”, como 0
, uma string vazia, null
, undefined
e NaN
, tornam-se false
.
Outros valores tornam-se true
.
Por exemplo:
alerta( Boolean(1) ); // verdadeiro alerta( Boolean(0) ); // falso alerta(Boolean("olá") ); // verdadeiro alerta(Boolean("") ); // falso
Atenção: a string com zero "0"
é true
Algumas linguagens (nomeadamente PHP) tratam "0"
como false
. Mas em JavaScript, uma string não vazia é sempre true
.
alerta(Boolean("0") ); // verdadeiro alerta(Boolean(" ") ); // espaços, também verdadeiros (qualquer string não vazia é verdadeira)
As três conversões de tipo mais utilizadas são para string, para número e para booleano.
String Conversion
– Ocorre quando produzimos algo. Pode ser executado com String(value)
. A conversão para string geralmente é óbvia para valores primitivos.
Numeric Conversion
– Ocorre em operações matemáticas. Pode ser executado com Number(value)
.
A conversão segue as regras:
Valor | Torna-se… |
---|---|
undefined | NaN |
null | 0 |
true / false | 1 / 0 |
string | A string é lida “como está”, os espaços em branco (inclui espaços, tabulações t , novas linhas n etc.) de ambos os lados são ignorados. Uma string vazia se torna 0 . Um erro dá NaN . |
Boolean Conversion
– Ocorre em operações lógicas. Pode ser executado com Boolean(value)
.
Segue as regras:
Valor | Torna-se… |
---|---|
0 , null , undefined , NaN , "" | false |
qualquer outro valor | true |
A maioria dessas regras é fácil de entender e memorizar. As exceções notáveis onde as pessoas geralmente cometem erros são:
undefined
é NaN
como um número, não 0
.
"0"
e strings somente com espaço como " "
são verdadeiros como booleanos.
Os objetos não são abordados aqui. Voltaremos a eles mais tarde no capítulo Conversão de objeto para primitivo, que é dedicado exclusivamente a objetos, depois de aprendermos coisas mais básicas sobre JavaScript.