Introdução ao JavaScript
O que é JavaScript · Onde ele roda · Variáveis · Tipos de dados · Operadores · Template literals
JavaScript (JS) é a linguagem de programação que dá comportamento à página web: reage a cliques, valida formulários, busca dados de um servidor, atualiza a tela sem recarregar. Diferente do HTML e do CSS, JavaScript tem lógica de verdade: variáveis, condicionais, loops, funções.
| Camada | Linguagem | Responsabilidade |
|---|---|---|
| Estrutura | HTML | O que é cada parte do conteúdo (título, lista, formulário...) |
| Apresentação | CSS | Como o conteúdo aparece (cores, layout, tipografia) |
| Comportamento | JavaScript | Como a página reage e interage |
Onde o JavaScript roda?
JavaScript nasceu para rodar dentro do navegador, mas hoje também roda fora dele, no servidor, através do Node.js (o mesmo motor V8 do Chrome, empacotado para executar JS fora de uma página). Este material foca em JS no navegador, mas a sintaxe da linguagem (variáveis, funções, loops) é a mesma nos dois ambientes.
1. Como incluir JavaScript em uma página
Assim como o CSS, há três formas de associar JavaScript a um documento HTML:
Inline (atributo)
<button onclick="alert('Clicou!')">Clique aqui</button>Funciona, mas mistura comportamento com estrutura e é difícil de manter. Evite fora de exemplos rápidos.
Elemento <script>
<!DOCTYPE html>
<html>
<body>
<h1>Minha página</h1>
<script>
console.log('Olá do JavaScript!');
</script>
</body>
</html>Arquivo externo
<!DOCTYPE html>
<html>
<head>
<title>Minha página</title>
</head>
<body>
<script src="app.js" defer></script>
</body>
</html>Boa prática
Prefira arquivo externo e coloque o <script> com o atributo defer. Assim, o navegador continua carregando o HTML normalmente e só executa o JS depois que o documento estiver pronto, evitando erros de "elemento não encontrado".
2. Variáveis: let, const e var
Uma variável é um espaço nomeado para guardar um valor que pode ser lido (e às vezes alterado) depois.
Existem três palavras-chave para declarar variáveis, e a diferença entre elas é o que realmente importa:
let
Pode ser reatribuída. Escopo de bloco (só existe dentro do {'{ }'} onde foi criada).
let total = 10;
total = 20; // okconst
Não pode ser reatribuída. Escopo de bloco. Use como padrão. Só troque para let quando precisar reatribuir.
const PI = 3.14;
PI = 3; // erro!var
Forma antiga (pré-2015). Escopo de função, não de bloco (comportamento confuso). Evite em código novo.
var x = 1;
// funciona, mas eviteBoa prática
Use const por padrão. Só use let quando o valor de fato precisa mudar (um contador, um acumulador). Evite var: ele existe por compatibilidade histórica, mas seu escopo de função causa bugs sutis que let/const resolvem.
const impede a reatribuição da variável, não a mutação do valor. Um objeto ou array guardado em const ainda pode ter seu conteúdo alterado:
const usuario = { nome: 'Ana' };
usuario.nome = 'Bruna'; // ok: está mudando uma propriedade, não a variável
usuario = {}; // erro! isso É reatribuição3. Tipos de dados primitivos
JavaScript tem tipagem dinâmica: a variável não tem tipo fixo, o valor que ela guarda sim. O operador typeof revela o tipo de um valor em tempo de execução.
| Tipo | Exemplo | typeof |
|---|---|---|
string | "Olá", 'texto' | "string" |
number | 42, 3.14, -7 | "number" |
boolean | true, false | "boolean" |
undefined | variável declarada sem valor | "undefined" |
null | ausência intencional de valor | "object" (pegadinha histórica) |
object | { nome: 'Ana' }, arrays, funções | "object" (ou "function") |
typeof "Olá"; // "string"
typeof 42; // "number"
typeof true; // "boolean"
typeof undefined; // "undefined"
typeof null; // "object" ← bug histórico da linguagem, conhecido e documentado
typeof [1, 2, 3]; // "object" ← arrays são um tipo especial de objeto4. Operadores
| Categoria | Operadores | Exemplo |
|---|---|---|
| Aritméticos | + - * / % ** | 10 % 3 → 1 (resto da divisão) |
| Comparação | == === != !== > < >= <= | "5" === 5 → false |
| Lógicos | && || ! | idade >= 18 && temDocumento |
| Atribuição | = += -= *= /= | total += 10 equivale a total = total + 10 |
=== vs ==
== compara valores convertendo tipos antes ("5" == 5 é true). === compara sem converter: valor e tipo precisam ser iguais ("5" === 5 é false). Use sempre ===/!==; o == solto gera bugs difíceis de rastrear por conversões implícitas inesperadas.
5. Template literals
Strings entre crases (`) permitem interpolar variáveis diretamente no texto com ${}, sem concatenação manual:
const nome = 'Ana';
const idade = 27;
// forma antiga, com concatenação
const antiga = 'Olá, ' + nome + '! Você tem ' + idade + ' anos.';
// template literal
const moderna = `Olá, ${nome}! Você tem ${idade} anos.`;
// também suporta múltiplas linhas
const bilhete = `Linha 1
Linha 2`;Montar um template literal ao vivo →
6. Comentários
// Comentário de uma linha
/*
Comentário
de várias linhas
*/
const total = 100; // comentário ao lado do código7. Boas práticas: resumo
- Prefira
const; useletsó quando o valor precisar mudar; evitevar. - Use
===/!==, nunca==/!=. - Dê nomes descritivos às variáveis (
precoTotal, nãoptoux). - Prefira template literals a concatenação com
+. - Um
<script defer>externo, não JS inline nos atributos HTML.
8. Exercícios
- Variáveis: Declare uma
constcom seu nome e umletcom sua idade. Tente reatribuir os dois e observe o erro noconst. - Tipos: Escreva 5 valores diferentes e preveja o resultado de
typeofpara cada um antes de testar. - Operadores: Sem executar, calcule o resultado de
"10" == 10,"10" === 10e10 % 3. - Template literal: Usando template literal, monte a frase
"Fulano tem X anos e mora em Y."a partir de três variáveis. - Mutação vs reatribuição: Crie um objeto com
conste altere uma de suas propriedades. Explique por que isso não gera erro.
Próxima aula: Aula 02: Funções, Condicionais e Loops →