8 Funções, Blocos, Procedimentos, Módulos e Parâmetros
Este capítulo organiza conceitos importantes para escrever código legível, reutilizável e escalável.
8.1 Blocos
Bloco é o trecho entre chaves {}. Ele delimita escopo.
let turma = "2A";
{
let turma = "3A";
console.log(`Dentro do bloco: ${turma}`);
}
console.log(`Fora do bloco: ${turma}`);8.2 Procedimentos
Procedimento executa uma ação e normalmente não depende de retorno.
function mostrarCabecalho() {
console.log("=== Sistema Acadêmico ===");
}
mostrarCabecalho();Com parâmetro:
function saudarAluno(nome) {
console.log(`Bem-vindo(a), ${nome}`);
}
saudarAluno("Marina");8.3 Funções com retorno
function calcularMedia(n1, n2, n3) {
return (n1 + n2 + n3) / 3;
}
console.log(calcularMedia(7, 8, 9));8.4 Passagem de parâmetros
8.4.1 Primitivo: cópia por valor
let quantidade = 5;
function alterarNumero(n) {
n = 99;
}
alterarNumero(quantidade);
console.log(quantidade); // 58.4.2 Objeto: referência compartilhada
const aluno = { nome: "Ana", nota: 8 };
function atualizarNota(dados) {
dados.nota = 10;
}
atualizarNota(aluno);
console.log(aluno.nota); // 108.4.3 Evitando mutação com spread
const tarefa = { titulo: "Estudar", concluida: false };
function concluirSemMutar(item) {
return { ...item, concluida: true };
}
const tarefaConcluida = concluirSemMutar(tarefa);
console.log(tarefa);
console.log(tarefaConcluida);8.5 Modularização
Quando o projeto cresce, separar por arquivos ajuda muito.
8.5.1 Export nomeado
matematica.js
export function somar(a, b) {
return a + b;
}main.js
import { somar } from "./matematica.js";
console.log(somar(5, 7));8.5.2 Múltiplos exports
boletim.js
export function media(a, b) {
return (a + b) / 2;
}
export function aprovado(mediaFinal) {
return mediaFinal >= 6;
}app.js
import { media, aprovado } from "./boletim.js";
const m = media(7, 5);
console.log(m);
console.log(aprovado(m));8.5.3 Export default
mensagem.js
export default function gerarMensagem(nome) {
return `Olá, ${nome}!`;
}principal.js
import gerarMensagem from "./mensagem.js";
console.log(gerarMensagem("Carlos"));8.6 Estrutura sugerida para projetos pequenos
projeto/
src/
calculos.js
validacoes.js
app.js
8.7 Exemplo integrador
calculos.js
export function totalDespesas(lista) {
return lista.reduce((acc, item) => acc + item, 0);
}app.js
import { totalDespesas } from "./calculos.js";
const gastos = [45, 30, 20, 10];
console.log(`Total: R$ ${totalDespesas(gastos)}`);8.8 Exercícios
- Crie um módulo
conversoes.jscom metro para centímetro. - Crie um módulo
boletim.jscom funções de média e status. - Crie um
export defaultpara formatar preço em reais. - Desafio: monte um mini projeto com
app.js,dados.jsecalculos.js.