Início

Responsive Web Development

UA8 — JavaScript: Comportamento

JavaScript adiciona interatividade e comportamento dinâmico às páginas web — manipulação do DOM, eventos, validações e muito mais.

JavaScript: O Motor da Interatividade Web — da sintaxe ao sistema
JavaScript: O Motor da Interatividade Web
A Anatomia da Web: HTML (estrutura), CSS (apresentação), JavaScript (comportamento)
A Anatomia da Web

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);
A Árvore do DOM: Document → html → head/body → elementos filhos
A Árvore do DOM
Manipulando o DOM: Consulta (getElementById, querySelector) e Ação (innerHTML, style, createElement)
Manipulando o DOM: Consulta e Ação

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);
  });
O Sistema Nervoso: Dissecando Eventos — Alvo (Target), Ouvinte (Listener), Gatilho (Event Type), Resposta (Function)
Dissecando Eventos: addEventListener

Eventos comuns

EventoQuando dispara
clickClique do mouse
submitEnvio de formulário
inputMudança em campo de texto
changeMudança confirmada (blur de select)
keydown / keyupTecla pressionada/solta
mouseoverMouse entra no elemento
DOMContentLoadedDOM 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.

Declaração de Variáveis: var (legado, evitar), let (flexível, escopo de bloco), const (imutável, preferir)
Declaração de Variáveis: var / let / const

Tipos de dados em JavaScript

TipoDescriçãoExemplo
StringSequência de caractereslet nome = “Ana”
NumberInteiro ou ponto flutuantelet idade = 30 | let pi = 3.14
BooleanVerdadeiro ou falsolet ativo = true
ArrayLista ordenada de valoreslet frutas = [“maçã”, “banana”]
ObjectColeção de pares chave-valorlet carro = {’{’} marca: “Honda”, ano: 2023 }
UndefinedVariável declarada sem valorlet x; // undefined
NullAusência intencional de valorlet dado = null
Tipos Primitivos: String, Number, Boolean, Array e Object com exemplos de código
Tipos Primitivos em JavaScript

Operadores em JavaScript

CategoriaOperadoresExemplo
Aritméticos+ - * / % ++ —10 % 3 === 1
Atribuição= += -= *= /= %=x += 5 (equivale a x = x + 5)
Comparação== != === !== < > <= >=10 === “10”false (tipo diferente)
Lógicos&& || !true && falsefalse

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);
Fluxo de Controle: condicionais (if/switch) e laços de repetição (for/while)
Fluxo de Controle: Lógica e Iteração

Métodos nativos úteis

MétodoO 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étodoRetornaExemplo
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 correspondentedocument.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

CategoriaEventos principais
Mouseclick dblclick mouseover mouseout mousedown mouseup
Tecladokeydown keypress keyup
Formuláriosubmit change focus blur input reset
Documento / JanelaDOMContentLoaded 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, Var e VAR sã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 sempre const.
  • == compara valor com coerção de tipo; === compara valor e tipo — sempre prefira ===.
  • innerHTML interpreta HTML; textContent só insere texto puro (mais seguro contra XSS).
  • addEventListener é o método recomendado para eventos — evite atributos onclick inline no HTML.
  • do...while executa 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.