Tipos e conversões
Números e strings
Todo valor possui um tipo associado a ele. Você já viu números, strings, listas.
Há uma distinção importante entre números e strings.
const um = 1 // número
const uno = "1" // string Anteriormente, houve um caso em que acessar um caractere de uma string resultou em um número armazenado como string.
Esse exemplo é parecido, o "1" é uma string por causa das aspas.
Os dois valores acima não são idênticos.
console.log(1 === "1") > falseTentar fazer somas usando strings assim causa problemas:
console.log("4" + 2 + 0) > "420"Em vez de somar os números, a funcionalidade de juntar strings do + que ocorreu.
Nesse processo, o 2 e o 0 foram convertidos em strings implicitamente. Para consertar isso, convertemos o "4" para número assim:
console.log(Number("4") + 2 + 0) > 6De forma mais geral, Number() converte para número, String() para string.
console.log(String(13))
console.log(String(true))
console.log(String("Chinforinfola"))
console.log(Number("-1.50")) > "13"
> "true"
> "Chinforinfola"
> -1.5
console.log(Number(""))
Tentou colocar algo que não seja um número no campo de texto? ⬆
O resultado acaba sendo um tal de NaN.
NaN é um acrônimo para "Not a Number", que significa "não é um número", em inglês. Até porque "abacaxi" não é um número.
console.log(Number("1️⃣")) // 1️⃣ também não é número
console.log(Number("")) // Mas aparentemente nada é > NaN
> 0Outro jeito de converter de número para string é usando .toFixed():
let numero = 6.54321
console.log(numero.toFixed(3)) > "6.543"Essa é outra daquelas funções que vão atrás do valor.
O número dentro dos parênteses define quantas casas aparecem depois da vírgula. Colocar um 0 aí arredonda o número para inteiro.
let inteiro = (9.4).toFixed(0)
// é necesário () em volta do número para usar .toFixed() diretamente
console.log(inteiro) > "9"Arredondamento para cima também acontece.
console.log((9.6).toFixed(0))
console.log((6.66666).toFixed(4)) > "10"
> "6.6667"E preenche com 0 para ficar do tamanho correto.
let reais = 0
console.log("R$" + reais.toFixed(2))