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
carregarDadosounomeCompleto.
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