Tipos de dados em JavaScript

A linguagem JavaScript é bastante simples quanto o assunto é tipos de dados.

🔤 String

Para a alegria geral da nação, começo com a boa informação de que, em JavaScript, existe um tipo de dado primitivo para lidar com texto. O nome, evidentemente, é string.

let disciplina = "Programação Orientada a Objetos";
console.log(typeof disciplina); // string

Um detalhe importante é que as strings são imutáveis em JavaScript. Isso significa que uma vez criada, não é possível alterar o conteúdo de uma string diretamente. Qualquer operação que pareça modificar uma string na verdade cria uma nova string (um espaço diferente é alocado na memória).

let copia = disciplina;
disciplina = "POO <3";

No fragmento acima, copia e disciplina apontarão para regiões diferentes de memória quando uma nova atribuição é feita à variável disciplina.

🔢 Números

Em JavaScript, não há tipos primitivos como int e float. Ambos são resumidos a um único tipo: number.

let a = 10;
let b = 7.42;

Em JavaScript, todos os números são de um único tipo: double (ponto flutuante de 64 bits).

✅ Booleanos

Enquanto em C precisávamos importar uma biblioteca ou definir manualmente o tipo booleano, em JavaScript é suporte nativo para isso:

let positivo = true;
let falso = false;

⚠️ Undefined e null: parece igual, mas não é!

Em JavaScript, há dois tipos de dados muito importantes: undefined e null (tudo minúsculo). Embora pareçam a mesma coisa, eles representam (evidentemente) significados diferentes.

undefined

O valor undefined será exibido quando tentamos acessar o valor de uma variável que foi declarada, mas não inicializada:

let nome;
console.log(nome); // undefined

Há um outro cenário em que esse valor é retornado, se utilizarmos a declaração de variáveis com var (que, como discutimos, tem uma abordagem de escopo diferente de let e const).

var sigla = "UFMT";
console.log(sigla); // UFMT
console.log(nomecompleto); // undefined

var nomecompleto = "Universidade Federal de Mato Grosso";
console.log(nomecompleto); // Universidade Federal de Mato Grosso

Observe que, no código acima, estamos imprimindo o valor de nomecompleto antes mesmo de sua declaração. Se estivéssemos em C, isso geraria um erro de compilação.

Em JavaScript, um recurso chamado hoisting (içamento, em tradução livre) puxa as declarações de variáveis var para o início do escopo. Apesar disso, apenas as declarações são içadas. Os valores só serão atribuídos na linha em que foram declaradas.

Portanto, quando encontrarmos uma variável com valor undefined, sabemos que ela ainda não foi inicializada, apenas declarada.

null

O conceito de null, por outro lado, é o mesmo que já estamos acostumados a utilizar na linguagem de programação C. Este valor é utilizado para indicar que não existe um valor válido em determinada variável ou região de memória.

console.log(sigla); // undefined
var sigla = "UFMT";
sigla = null;
console.log(sigla); // null

Big Int

O BigInt é um tipo de dado incluído recentemente na linguagem JavaScript (ES2020). Como a linguagem possuía apenas o tipo number, que tratava todos os números como float, os números inteiros só poderiam ser armazenados de forma precisa com até 15 dígitos.

A declaração de um BigInt pode ocorrer de duas formas:

let exemplo1 = BigInt(999999999999999);
let outrojeito = 999999999999999n; // n ao final do número

Referências

https://www.w3schools.com/js/js_datatypes.asp