Dica para iniciantes: Comece pelo console do navegador para testes rápidos.
1. Fundamentos do JavaScript
O que é JavaScript e Por Que Aprender?
JavaScript é a linguagem que adiciona interatividade às páginas web. Enquanto HTML define a estrutura e CSS cuida da aparência, JavaScript é responsável pelo comportamento. Com ele, você pode:
Responder às ações do usuário (cliques, digitação)
Alterar o conteúdo da página dinamicamente
Comunicar-se com servidores para buscar dados
Criar animações e efeitos visuais
Analogia: Se um site fosse uma casa, o HTML seria a estrutura (paredes, telhado), o CSS seria a decoração e pintura, e o JavaScript seria a eletricidade, encanamento e tudo que faz a casa "funcionar".
Primeiros Passos: Variáveis e Tipos de Dados
JavaScript trabalha com tipagem dinâmica, o que significa que as variáveis podem ser atribuídas a diferentes tipos de dados ao longo do tempo:
JavaScript oferece três formas de declarar variáveis:
var nome = "João"; // Forma antiga (evite usar)let idade = 25; // Recomendado para valores que mudamconst PI = 3.14159; // Para valores que nunca mudam
Boa prática: Prefira usar const sempre que possível, e let quando precisar alterar o valor da variável. Evite usar var em código novo.
Atividade prática: Declare diferentes variáveis no console do seu navegador e verifique seu tipo usando o operador typeof, como em typeof nome.
Operadores Aritméticos
Os operadores aritméticos permitem realizar operações matemáticas com números:
let a = 10;let b = 5;// Operações básicaslet soma = a + b; // 15let subtracao = a - b; // 5let multiplicacao = a * b; // 50let divisao = a / b; // 2// Operações adicionaislet exponenciacao = a ** b; // 10^5 = 100000let resto = a % b; // 0 (resto da divisão)// Incremento e decrementolet c = 1;c++; // c agora é 2c--; // c volta a ser 1
Biblioteca Math
JavaScript possui uma biblioteca embutida com funções matemáticas:
Math.PI; // 3.141592653589793Math.sqrt(16); // 4 (raiz quadrada)Math.abs(-10); // 10 (valor absoluto)Math.round(4.7); // 5 (arredondamento)Math.floor(4.7); // 4 (arredonda para baixo)Math.ceil(4.3); // 5 (arredonda para cima)Math.random(); // número aleatório entre 0 e 1
Atividade prática:
Calcule a área de um círculo com raio 5 (dica: área = π × r²)
Gere um número aleatório entre 1 e 10:
Operadores de Comparação e Lógicos
Os operadores de comparação verificam relações entre valores:
Os operadores lógicos combinam expressões booleanas:
// AND lógico (&&) - ambos os lados precisam ser truetrue && true; // truetrue && false; // false// OR lógico (||) - pelo menos um lado precisa ser truetrue || false; // truefalse || false; // false// NOT lógico (!) - inverte o valor!true; // false!false; // true
Analogia: Pense nos operadores lógicos como decisões do dia a dia:
&& (AND): Para ir à praia você precisa ter tempo livre E o tempo precisar estar bom
|| (OR): Para ficar feliz você precisa ganhar na loteria OU receber uma boa notícia
! (NOT): Se não está chovendo (!chovendo), então posso sair sem guarda-chuva
Estruturas Condicionais
As estruturas condicionais permitem executar diferentes blocos de código dependendo de condições:
// if simplesif (idade >= 18) { console.log("Você é maior de idade");}// if/elseif (temperatura > 30) { console.log("Está quente!");} else { console.log("Não está tão quente.");}// if/else if/elseif (hora < 12) { console.log("Bom dia!");} else if (hora < 18) { console.log("Boa tarde!");} else { console.log("Boa noite!");}// Operador ternário (forma compacta de if/else)let mensagem = idade >= 18 ? "Pode entrar" : "Acesso negado";
Atividade prática: Crie um programa que verifica se um número é positivo, negativo ou zero e exibe uma mensagem correspondente.
Estruturas de Repetição (Loops)
Os loops permitem executar um bloco de código múltiplas vezes:
// Loop while (enquanto)let contador = 1;while (contador <= 5) { console.log(`Contador: ${contador}`); contador++;}// Loop for (para)for (let i = 1; i <= 5; i++) { console.log(`Número: ${i}`);}// Loop for...of (para elementos de uma coleção)const frutas = ["maçã", "banana", "laranja"];for (let fruta of frutas) { console.log(`Fruta: ${fruta}`);}// Loop for...in (para propriedades de um objeto)const pessoa = { nome: "Ana", idade: 25, cidade: "Rio" };for (let propriedade in pessoa) { console.log(`${propriedade}: ${pessoa[propriedade]}`);}
Use um loop para imprimir os números pares de 2 a 20
Calcule a soma dos números de 1 a 10 usando um loop
Arrays (Listas)
Arrays são coleções ordenadas de valores que podem ser de qualquer tipo:
// Criando arraysconst numeros = [1, 2, 3, 4, 5];const misto = [42, "texto", true, [1, 2], {nome: "João"}];// Acessando elementos (índices começam em 0)console.log(numeros[0]); // 1console.log(numeros[2]); // 3// Modificando elementosnumeros[1] = 20; // agora é [1, 20, 3, 4, 5]// Propriedades e métodos comunsnumeros.length; // 5 (tamanho do array)numeros.push(6); // Adiciona 6 no final: [1, 20, 3, 4, 5, 6]numeros.unshift(0); // Adiciona 0 no início: [0, 1, 20, 3, 4, 5, 6]numeros.pop(); // Remove e retorna o último elemento: 6numeros.shift(); // Remove e retorna o primeiro elemento: 0numeros.includes(3); // true (verifica se contém o valor)numeros.indexOf(20); // 1 (posição do elemento)numeros.slice(1, 3); // [20, 3] (cria subarray do índice 1 até o 3 (exclusivo))numeros.concat([7, 8]); // Cria novo array combinando os dois// Métodos avançadosnumeros.forEach(num => console.log(num * 2)); // Executa função para cada elementonumeros.map(num => num * 2); // Cria novo array com elementos transformadosnumeros.filter(num => num > 3); // Cria novo array com elementos filtradosnumeros.reduce((soma, atual) => soma + atual, 0); // Reduz o array a um único valor
Atividade prática:
Crie um array com seus hobbies favoritos
Use um loop para imprimi-los na tela
Adicione um novo hobby ao final da lista
Remova o primeiro hobby da lista
Funções - Blocos de Código Reutilizáveis
Funções são blocos de código que podem ser chamados múltiplas vezes:
// Declaração de funçãofunction saudacao(nome) { return `Olá, ${nome}!`;}// Chamando a funçãoconsole.log(saudacao("Maria")); // "Olá, Maria!"// Função com múltiplos parâmetrosfunction soma(a, b) { return a + b;}// Parâmetros com valores padrãofunction cumprimento(nome, hora = "dia") { return `Bom ${hora}, ${nome}!`;}console.log(cumprimento("João")); // "Bom dia, João!"console.log(cumprimento("Ana", "noite")); // "Bom noite, Ana!"// Funções de seta (arrow functions) - forma modernaconst quadrado = (n) => n * n;const somar = (a, b) => a + b;const saudar = nome => `Olá, ${nome}!`;
Atividade prática:
Crie uma função que receba a idade e retorne se a pessoa é maior de idade
Crie uma função que converta temperatura de Celsius para Fahrenheit
Objetos
Objetos são coleções de pares chave-valor que representam entidades:
// Criando um objetoconst pessoa = { nome: "Carlos", idade: 30, profissao: "Desenvolvedor", hobbies: ["música", "esportes", "leitura"], endereco: { rua: "Rua Principal", cidade: "São Paulo" }, apresentar: function() { return `Olá, meu nome é ${this.nome} e tenho ${this.idade} anos.`; }};// Acessando propriedadesconsole.log(pessoa.nome); // "Carlos"console.log(pessoa["profissao"]); // "Desenvolvedor"console.log(pessoa.hobbies[0]); // "música"console.log(pessoa.endereco.cidade); // "São Paulo"console.log(pessoa.apresentar()); // "Olá, meu nome é Carlos e tenho 30 anos."// Adicionando/modificando propriedadespessoa.email = "carlos@exemplo.com";pessoa.idade = 31;// Removendo propriedadesdelete pessoa.email;// Verificando se propriedade existe"nome" in pessoa; // truepessoa.hasOwnProperty("telefone"); // false
Atividade prática:
Crie um objeto representando um filme com propriedades como título, diretor, ano e gênero
Adicione um método que retorne uma descrição do filme
Adicione um array de atores ao objeto
2. JavaScript no Navegador
Manipulando o DOM (Document Object Model)
O DOM é a representação em árvore de uma página HTML, que permite ao JavaScript acessar e modificar os elementos:
// Selecionando elementosconst titulo = document.getElementById("titulo");const paragrafos = document.getElementsByTagName("p");const botoes = document.getElementsByClassName("botao");const primeiroLink = document.querySelector("a");const todosLinks = document.querySelectorAll("a");// Modificando conteúdotitulo.textContent = "Novo título"; // Só textotitulo.innerHTML = "Título com <em>ênfase</em>"; // Com HTML// Manipulando estilostitulo.style.color = "blue";titulo.style.fontSize = "24px";// Manipulando classestitulo.classList.add("destaque");titulo.classList.remove("antigo");titulo.classList.toggle("visivel");titulo.classList.contains("destaque"); // true// Criando e adicionando elementosconst novoParagrafo = document.createElement("p");novoParagrafo.textContent = "Texto do novo parágrafo";document.body.appendChild(novoParagrafo);// Removendo elementosconst elementoAntigo = document.getElementById("obsoleto");elementoAntigo.parentNode.removeChild(elementoAntigo);