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.