Tipos de Dados e Armazenamento em JavaScript

Literais e variáveis

Um literal é um valor fixo, como 42, "texto" ou false. Embora seja possível usar literais diretamente, na prática guardamos esses valores em variáveis, o que torna o código reutilizável e mais fácil de manter.

Em JavaScript, uma variável pode ser declarada com var, let ou const:

var mensagem = "Olá, mundo!";

Identificadores

Identificadores são os nomes criados pelo desenvolvedor para variáveis, funções, propriedades e outros elementos. Eles devem seguir estas regras:

  • Podem conter letras, dígitos, _ (sublinhado) e $ (cifrão);
  • Não podem começar com um dígito;
  • Não podem ser palavras-chave ou reservadas da linguagem;
  • Costumam usar o estilo camelCase, por exemplo carregarDados ou nomeCompleto.

O motor JavaScript armazena identificadores usando codificação Unicode.

Tipos de dados

JavaScript define seis tipos principais:

  • String
  • Number
  • Boolean
  • Null
  • Undefined
  • Object

Os cinco primeiros são classificados como tipos primitivos. Object é o tipo de referência.

String

Representa textos delimitados por aspas simples ou duplas, sem misturar os delimitadores. Caracteres especiais são escapados com a barra invertida.

var cidade = "São Paulo";
var caminho = 'C:\\usuarios\\ana';

Number

Todos os valores numéricos — inteiros ou decimais — pertencem ao tipo Number. Os limites podem ser consultados assim:

var limiteMaximo = Number.MAX_VALUE;
console.log(limiteMaximo);

var limiteMinimo = Number.MIN_VALUE;
console.log(limiteMinimo);

Se um cálculo ultrapassar o valor máximo, o resultado será Infinity; abaixo do mínimo negativo, -Infinity. Ambos ainda são do tipo number.

O valor NaN (Not a Number) também é classificado como number e indica que uma operação numérica falhou.

Importante: cálculos com ponto flutuante em JavaScript podem apresentar imprecisões, portanto evite usá-lo para operações que exijam alta precisão, como valores financeiros.

Bases numéricas diferentes podem ser escritas com prefixos:

  • Hexadecimal: 0x
  • Octal: 0
  • Binário: 0b (suporte pode variar entre navegadores)

Boolean

Assume apenas dois valores: true (verdadeiro) e false (falso).

Null e Undefined

null representa uma ausência intencional de valor. Curiosamente, typeof null retorna "object". undefined indica que uma variável foi declarada, mas ainda não recebeu nenhum valor.

var vazio = null;
console.log(typeof vazio); // "object"

var naoDefinido;
console.log(typeof naoDefinido); // "undefined"

Object

Objetos agrupam dados e comportamentos. Diferentemente dos primitivos, eles são armazenados por referência, o que afeta diretamente comparações e atribuições.

Armazenamento na memória

Valores primitivos são armazenados na pilha (stack). Cada variável mantém seu próprio valor, e alterar uma não afeta a outra.

var a = 5;
var b = a;
b = 10;
console.log(a); // 5

Objetos, por outro lado, ficam na heap. A variável guarda apenas o endereço de memória do objeto, não o objeto em si. Dessa forma, duas variáveis podem apontar para o mesmo objeto e alterações feitas por uma se refletem na outra.

var objetoA = { valor: 1 };
var objetoB = objetoA;
objetoB.valor = 2;
console.log(objetoA.valor); // 2

Na comparação, primitivos são avaliados pelo valor. Objetos são avaliados pelo endereço de memória, então dois objetos iguais, mas criados separadamente, são considerados diferentes.

var p1 = { nome: "Ana" };
var p2 = { nome: "Ana" };
console.log(p1 === p2); // false

Tags: javascript ecmascript DataTypes PrimitiveTypes ReferenceTypes

Publicado em 7-13 05:53