UA8 — JavaScript: Comportamento
JavaScript adiciona interatividade e comportamento dinâmico às páginas web — manipulação do DOM, eventos, validações e muito mais.
Fundamentos
// Variáveis
const nome = "Marcus"; // imutável (preferir)
let idade = 25; // mutável
// Funções
function saudar(nome) {
return `Olá, ${nome}!`;
}
// Arrow function
const dobrar = (n) => n * 2;
// Arrays
const frutas = ["maçã", "banana", "uva"];
frutas.forEach(f => console.log(f));
const maiusculas = frutas.map(f => f.toUpperCase());
Manipulação do DOM
// Selecionar elementos
const btn = document.querySelector('#meu-botao');
const cards = document.querySelectorAll('.card');
// Modificar conteúdo
btn.textContent = 'Clique aqui';
btn.style.background = '#3b82f6';
btn.classList.add('ativo');
btn.classList.toggle('visivel');
// Criar e inserir elemento
const li = document.createElement('li');
li.textContent = 'Novo item';
document.querySelector('ul').appendChild(li);
Eventos
// Click
btn.addEventListener('click', () => {
alert('Clicou!');
});
// Formulário
document.querySelector('form')
.addEventListener('submit', (e) => {
e.preventDefault(); // impede o envio padrão
const nome = document.querySelector('#nome').value;
console.log(`Enviando: ${nome}`);
});
// Input em tempo real
document.querySelector('#busca')
.addEventListener('input', (e) => {
console.log(e.target.value);
});
Eventos comuns
| Evento | Quando dispara |
|---|---|
click | Clique do mouse |
submit | Envio de formulário |
input | Mudança em campo de texto |
change | Mudança confirmada (blur de select) |
keydown / keyup | Tecla pressionada/solta |
mouseover | Mouse entra no elemento |
DOMContentLoaded | DOM completamente carregado |
Boas práticas
Use const por padrão; use let só quando precisar reatribuir. Evite var — tem escopo de função e causa bugs difíceis de rastrear.
Tipos de dados em JavaScript
| Tipo | Descrição | Exemplo |
|---|---|---|
String | Sequência de caracteres | let nome = “Ana” |
Number | Inteiro ou ponto flutuante | let idade = 30 | let pi = 3.14 |
Boolean | Verdadeiro ou falso | let ativo = true |
Array | Lista ordenada de valores | let frutas = [“maçã”, “banana”] |
Object | Coleção de pares chave-valor | let carro = {’{’} marca: “Honda”, ano: 2023 } |
Undefined | Variável declarada sem valor | let x; // undefined |
Null | Ausência intencional de valor | let dado = null |
Operadores em JavaScript
| Categoria | Operadores | Exemplo |
|---|---|---|
| Aritméticos | + - * / % ++ — | 10 % 3 === 1 |
| Atribuição | = += -= *= /= %= | x += 5 (equivale a x = x + 5) |
| Comparação | == != === !== < > <= >= | 10 === “10” → false (tipo diferente) |
| Lógicos | && || ! | true && false → false |
Controle de fluxo
// if / else
if (idade >= 18) {
console.log("Adulto");
} else {
console.log("Menor");
}
// switch
switch (dia) {
case "seg": console.log("Segunda"); break;
case "ter": console.log("Terça"); break;
default: console.log("Outro dia");
}
// for — número de iterações conhecido
for (let i = 0; i < 5; i++) { console.log(i); }
// while — condição avaliada antes
let i = 0;
while (i < 5) { console.log(i); i++; }
// do...while — executa ao menos uma vez
do { console.log(i); i++; } while (i < 5);
Métodos nativos úteis
| Método | O que faz |
|---|---|
alert(“msg”) | Exibe caixa de alerta |
confirm(“msg”) | Caixa OK/Cancelar — retorna true ou false |
prompt(“msg”) | Solicita valor ao usuário — retorna a string digitada |
parseInt(“10”) | Converte string para inteiro |
parseFloat(“3.14”) | Converte string para número de ponto flutuante |
console.log(x) | Exibe valor no console do navegador (F12) |
Métodos de seleção DOM
| Método | Retorna | Exemplo |
|---|---|---|
getElementById(“id”) | Um elemento (ou null) | document.getElementById(“btn”) |
getElementsByClassName(“cls”) | HTMLCollection (vivo) | document.getElementsByClassName(“card”) |
getElementsByTagName(“tag”) | HTMLCollection (vivo) | document.getElementsByTagName(“p”) |
querySelector(“sel”) | Primeiro elemento correspondente | document.querySelector(“.ativo”) |
querySelectorAll(“sel”) | NodeList (estática) | document.querySelectorAll(“li”) |
Manipulação DOM — referência rápida
const el = document.getElementById("box");
// Conteúdo
el.innerHTML = "<b>Novo</b>"; // interpreta HTML
el.textContent = "Apenas texto"; // só texto (seguro)
// Atributos
el.setAttribute("class", "ativo");
const cls = el.getAttribute("class"); // "ativo"
el.removeAttribute("disabled");
// Criar e remover
const p = document.createElement("p");
p.textContent = "Novo parágrafo";
document.body.appendChild(p);
p.parentNode.removeChild(p); // ou p.remove()
Categorias de eventos
| Categoria | Eventos principais |
|---|---|
| Mouse | click dblclick mouseover mouseout mousedown mouseup |
| Teclado | keydown keypress keyup |
| Formulário | submit change focus blur input reset |
| Documento / Janela | DOMContentLoaded load resize scroll unload |
Como incluir JavaScript na página
<!-- 1. Inline (evitar) -->
<button onclick="alert('Clicou!')">Clique</button>
<!-- 2. Interno (bloco <script> no HTML) -->
<script>
console.log("Página carregada");
</script>
<!-- 3. Externo (recomendado — antes de </body>) -->
<script src="js/main.js"></script>
Práticas Modernas — JavaScript
Desestruturação (ES6+): const { nome, idade } = usuario; — extrai propriedades de objetos diretamente.
Spread/Rest: [...arr1, ...arr2] une arrays; { ...obj, extra: 1 } copia e estende objetos.
Optional Chaining (?.): usuario?.endereco?.cep — evita erro se propriedade for null.
TypeScript: superset tipado de JS que adiciona tipos estáticos — detecta erros em tempo de desenvolvimento, padrão em projetos React/Angular.
Módulos ES (import/export): organizam o código em arquivos separados sem poluir o escopo global — substituem var global e require.
Dicas para a prova — UA8
- JavaScript foi criado em 1995 pela Netscape. Java e JavaScript são linguagens distintas — nomes parecidos por acordo de marketing.
- JavaScript é case-sensitive:
var,VareVARsão tratados como identificadores diferentes. var= escopo de função (imprevisível).let= escopo de bloco (mutável).const= escopo de bloco (imutável). Prefira sempreconst.==compara valor com coerção de tipo;===compara valor e tipo — sempre prefira===.innerHTMLinterpreta HTML;textContentsó insere texto puro (mais seguro contra XSS).addEventListeneré o método recomendado para eventos — evite atributosonclickinline no HTML.do...whileexecuta o bloco pelo menos uma vez, mesmo que a condição seja falsa desde o início.
Referências bibliográficas desta UA
- Pinto, R. A. Ferramentas de Desenvolvimento Web. Porto Alegre: SAGAH, 2024.
- Freeman, E.; Robson, E. Use a Cabeça! JavaScript. O’Reilly, 2014.
- Flanagan, D. JavaScript: O Guia Definitivo. 7. ed. O’Reilly, 2020.