Variáveis, tipos e operadores
let, const, os tipos primitivos e por que === substituiu == na maioria do código moderno.
let e const — var praticamente não se usa mais
let idade = 28; // pode ser reatribuída depois
const nome = "Ana"; // não pode ser reatribuída
idade = 29; // ok
nome = "Bia"; // erro: Assignment to constant variable.const é a escolha padrão — sinaliza "isso não muda". let só quando você sabe que vai reatribuir (um contador, um acumulador). var existe por compatibilidade histórica e tem regras de escopo mais confusas — evite em código novo.
Os tipos primitivos
typeof 42 // "number" — só existe UM tipo numérico em JS (sem int/float separados)
typeof "oi" // "string"
typeof true // "boolean"
typeof undefined // "undefined" — variável declarada mas sem valor
typeof null // "object" — isso é um bug histórico da linguagem, aceito como está
typeof Symbol() // "symbol"
typeof 10n // "bigint"== vs. === — a diferença que mais causa bug em quem começa
== converte os tipos antes de comparar (coerção); === compara o valor e o tipo, sem conversão nenhuma. Quase todo código moderno usa só ===.
0 == "0" // true — "0" vira número 0 antes de comparar
0 === "0" // false — tipos diferentes (number vs string), não converte
null == undefined // true — caso especial da linguagem
null === undefined // falseTemplate strings — interpolar sem concatenar
const nome = "Ana";
const idade = 28;
// jeito antigo
"Olá, " + nome + "! Você tem " + idade + " anos."
// template string
`Olá, ${nome}! Você tem ${idade} anos.`Exercício
Por que const lista = [1, 2, 3]; lista.push(4); funciona, mesmo lista sendo const?