270 exercícios encontrados
Olá, mundo!
Escreva um programa que exiba "Olá, mundo!" no console.
Saudação personalizada
Declare uma constante com seu nome e exiba: "Olá, [nome]! Bem-vindo ao JavaScript!"
Soma de dois números
Declare duas constantes numéricas e exiba a soma delas.
Tipos de dados
Crie variáveis dos tipos number, string, boolean e exiba cada uma com typeof.
Operações matemáticas
Declare dois números e exiba: soma, subtração, multiplicação, divisão, módulo e potência.
Template literals
Declare nome, idade e cidade. Exiba uma apresentação usando template literal com múltiplas linhas.
Declare nome, idade e cidade. Exiba uma apresentação usando template literal.
Const vs Let
Declare uma const com nome e uma let com contador. Tente reatribuir a const para ver o erro. Incremente a let.
Declare uma const e uma let. Tente reatribuir a const dentro de try/catch para ver o erro. Incremente a let.
Conversor de temperatura
Declare uma temperatura em Celsius e converta para Fahrenheit. F = C * 9/5 + 32
Área e perímetro
Declare largura e altura de um retângulo. Calcule e exiba área e perímetro.
Troco do caixa
Declare preço e valor pago. Calcule e exiba o troco com 2 casas decimais usando toFixed(2).
Declare preço do produto e valor pago. Calcule e exiba o troco com 2 casas decimais usando toFixed(2).
Conversor de moeda
Declare cotação do dólar e valor em reais. Converta para dólar, euro (R$5.80) e libra (R$6.50). Use toFixed(2).
Declare cotação do dólar e valor em reais. Converta para dólar, euro (R$5.80) e libra (R$6.50).
Salário com descontos
Declare salário bruto. Calcule INSS (11%), IR (15%) e exiba salário líquido.
Operadores de comparação
Demonstre a diferença entre == e === com exemplos de coerção de tipo.
Demonstre a diferença entre == e === com exemplos de coerção de tipo. Compare: 0 == false, 0 === false, "" == false, null == undefined.
Velocidade média
Declare distância (km) e tempo (horas). Calcule velocidade em km/h e m/s.
IMC simples
Declare peso (kg) e altura (m). Calcule IMC usando Math.pow() e exiba com toFixed(2).
Declare peso e altura. Calcule IMC usando ** e exiba com toFixed(2).
Aluguel de carro
Declare dias alugados e km rodados. Calcule total: R$90/dia + R$0.20/km.
Conversor de tempo
Declare segundos. Converta para horas, minutos e segundos restantes usando Math.floor() e %.
Declare segundos. Converta para horas, minutos e segundos usando Math.floor() e %.
Preço com desconto
Declare preço e percentual de desconto. Calcule valor do desconto e preço final.
Declare preço e percentual. Calcule valor do desconto e preço final.
Calculadora de viagem
Declare distância, consumo (km/l) e preço do combustível. Calcule litros e custo.
Declare distância, consumo (km/l) e preço do combustível. Calcule litros e custo total.
Folha de pagamento
Declare nome, horas trabalhadas e valor por hora. Calcule e exiba salário bruto formatado.
Declare nome, horas e valor/hora. Calcule e exiba salário formatado.
Equação do segundo grau
Declare coeficientes a, b e c. Calcule o delta usando Math.pow(). Exiba apenas o delta.
Declare coeficientes a, b e c. Calcule o delta. Exiba apenas o delta.
Juros compostos
Declare capital, taxa mensal (%) e meses. Calcule montante com M = C * (1 + i)^n.
Declare capital, taxa mensal (%) e meses. Calcule montante com M = C * (1 + i)^n usando Math.pow().
Índice de reajuste
Declare salário atual e novo salário. Calcule percentual e valor do reajuste.
Declare salário atual e novo. Calcule percentual e valor do reajuste.
Divisão de conta
Declare valor, pessoas e gorjeta (%). Calcule total com gorjeta e valor por pessoa.
Declare valor da conta, pessoas e gorjeta (%). Calcule total com gorjeta e valor por pessoa.
Custo de pintura
Declare largura e altura da parede, rendimento (m²/l) e preço/litro. Calcule custo com 2 demãos.
Declare largura, altura, rendimento (m²/l) e preço/litro. Calcule custo com 2 demãos.
Parcelamento no cartão
Declare valor, parcelas e taxa mensal. Calcule total e parcela com juros simples.
Redução de vida por cigarro
Declare cigarros/dia e anos fumando. Cada cigarro reduz 11 minutos. Calcule redução em dias.
Viagem econômica
Declare distância, consumo urbano, consumo estrada, % trecho urbano e preço. Calcule gasto ponderado.
Declare distância, consumo urbano, consumo estrada, % urbano e preço. Calcule gasto ponderado.
Financiamento imobiliário
Declare valor do imóvel, entrada (%), taxa anual e prazo (anos). Calcule: financiado, taxa mensal, parcela e total pago.
Declare valor do imóvel, entrada (%), taxa anual e prazo (anos). Calcule: financiado, taxa mensal, parcela e total.
Análise de investimento
Declare dois investimentos (capital e taxa anual). Compare montantes após 5 anos com juros compostos. Use Math.max() para indicar o melhor.
Declare dois investimentos (capital e taxa anual). Compare montantes após 5 anos. Use Math.max() para indicar o melhor.
Par ou ímpar
Declare um número e use if/else para dizer se é par ou ímpar.
Maior de idade
Declare uma idade e diga se a pessoa é maior ou menor de idade.
Positivo negativo ou zero
Declare um número e diga se é positivo, negativo ou zero.
Aprovado ou reprovado
Declare uma nota e diga se o aluno está aprovado (>= 7) ou reprovado.
Maior entre dois
Declare dois números e diga qual é o maior ou se são iguais.
Desconto simples
Declare o valor de uma compra. Se for maior que R$100, aplique 10% de desconto.
Vogal ou consoante
Declare uma letra e diga se é vogal ou consoante usando includes().
Calculadora com switch
Declare dois números e um operador (+,-,*,/). Use switch para realizar a operação.
Pode votar
Declare uma idade e diga se o voto é proibido (< 16), facultativo (16-17 ou >= 70) ou obrigatório (18-69).
Triângulo válido
Declare três lados e diga se formam um triângulo válido.
Situação do aluno
Declare três notas, calcule a média e diga: Aprovado (>= 7), Recuperação (>= 4) ou Reprovado.
Classificação do IMC
Declare peso e altura, calcule IMC e classifique: Abaixo do peso, Normal, Sobrepeso, Obesidade.
Desconto progressivo
Declare valor de compra. Até R$100 sem desconto, R$100-R$500 desconto 10%, acima R$500 desconto 20%.
Ano bissexto
Declare um ano e diga se é bissexto. Divisível por 4, exceto por 100, a menos que por 400.
Saudação por horário
Declare hora (0-23) e exiba: Bom dia (0-11), Boa tarde (12-17), Boa noite (18-23). Se inválida, erro.
Aumento salarial
Declare salário e aplique: até R$1500 → 15%, R$1500-R$2500 → 10%, acima → 5%.
Tipo de triângulo
Declare três lados, valide e classifique: Equilátero, Isósceles ou Escaleno.
Sistema de login
Declare usuário e senha fixos. Compare com valores informados e diga se login foi bem-sucedido.
Calculadora de frete
Declare peso e estado (SP/RJ/outros). SP: R$5/kg, RJ: R$8/kg, outros: R$12/kg. Frete grátis acima de R$100.
Operador ternário
Reescreva 3 condicionais simples usando operador ternário: par/ímpar, maior de idade, aprovado/reprovado.
Empréstimo bancário
Declare salário, valor do empréstimo e prazo. A parcela não pode exceder 30% do salário. Calcule e diga se aprovado.
Validador de senha
Declare uma senha e valide: mínimo 8 chars, pelo menos um número, pelo menos uma maiúscula. Exiba mensagem para cada falha.
Tabela do IR
Calcule IR conforme tabela progressiva: até R$1903.98 isento, até R$2826.65 7.5%, até R$3751.05 15%, até R$4664.68 22.5%, acima 27.5%.
Classificador de produto
Declare nome, preço e estoque. Classifique: Crítico (< 5), Alerta (5-20), Normal (> 20). Se preço > R$1000 e estoque < 10, marque como Prioritário.
Pedra papel tesoura
Declare jogada do usuário e gere uma aleatória para o computador usando Math.random(). Determine o vencedor.
Simulador de caixa eletrônico
Declare saldo e valor do saque. Valide: saldo suficiente, múltiplo de 50, máximo R$1000. Mensagem específica para cada erro.
Sistema de pontuação
Declare 5 respostas (s=acerto/n=erro/p=pulou). Acerto +10, erro -5, pulou 0. Classifique: Ouro(>=40), Prata(>=20), Bronze(>=0), Eliminado(<0).
Aprovação de crédito
Declare renda, score (0-1000) e valor solicitado. Aprovado se: score >= 700 e parcela <= 30% renda, OU score >= 500 e parcela <= 20% renda e valor <= R$10000.
Aluguel de temporada
Declare tipo (casa/apto), quartos e temporada (alta/baixa). Casa alta: R$300+R$50/quarto, baixa: R$200+R$30/quarto. Apto alta: R$200+R$40/quarto, baixa: R$150+R$25/quarto. Desconto 15% para mais de 7 dias.
Diagnóstico de saúde
Declare pressão sistólica e diastólica. Classifique: Normal (<120 e <80), Elevada (120-129 e <80), Hipertensão 1 (130-139 ou 80-89), Hipertensão 2 (>=140 ou >=90), Crise (>180 ou >120).
Contagem crescente
Exiba os números de 1 a 10 usando for.
Contagem regressiva
Exiba contagem regressiva de 10 até 1 usando for.
Tabuada
Declare um número e exiba sua tabuada de 1 a 10 usando for.
Soma de 1 a N
Declare N e calcule a soma de 1 até N usando for.
Números pares com while
Exiba números pares de 2 a 20 usando while.
Fatorial
Declare N e calcule o fatorial usando for.
Somar até zero
Use um array de números pré-definido e some todos até encontrar o 0.
Maior número
Declare um array com 5 números e encontre o maior usando for sem Math.max().
Contar pares e ímpares
Declare um array com 10 números e conte quantos são pares e ímpares usando for.
Do...while menu
Simule um menu com do...while que executa pelo menos uma vez. Use um array de opções pré-definidas.
Fibonacci
Declare N e exiba os N primeiros termos da sequência de Fibonacci usando for.
Número primo
Declare um número e diga se é primo usando for.
Média e estatísticas
Declare um array com 5 notas. Calcule média, maior e menor usando for sem métodos de array.
Tabuada completa
Exiba tabuada de 1 a 5 completa usando loops aninhados.
Pirâmide de asteriscos
Declare N e exiba pirâmide centralizada de asteriscos com N linhas usando loops aninhados.
Soma dos dígitos
Declare um número inteiro e calcule a soma dos seus dígitos usando for...of e String().
Progressão aritmética
Declare primeiro termo, razão e número de termos de uma PA. Exiba todos os termos e a soma.
Jogo de adivinhação
Simule um jogo de adivinhação. Use array de tentativas pré-definidas e while para verificar cada uma.
Estatísticas de vendas
Declare array de vendas mensais (12 meses). Calcule total, média, melhor e pior mês usando for.
Contador de vogais
Declare uma string e conte as vogais usando for...of e includes().
Primos até N
Declare N e liste todos os primos de 2 até N usando loops aninhados.
Ordenação bubble sort
Declare array com 7 números. Ordene com bubble sort sem usar sort().
Calculadora de parcelas
Declare valor financiado, taxa mensal e parcelas. Exiba mês a mês usando for.
Matriz 3x3
Declare array de arrays representando matriz 3x3. Exiba formatada e calcule soma da diagonal principal.
Palíndromo
Declare uma palavra e verifique se é palíndromo usando for sem reverse().
Relatório de temperatura
Declare array com temperaturas de 7 dias. Calcule média, dias acima da média, maior, menor e variação usando dois for.
Simulador de eleição
Declare array de votos (1,2,3,0=nulo,9=branco). Contabilize usando for. Exiba resultado e vencedor.
Caixa registradora
Declare array de objetos {produto, preco}. Use for...of para calcular total, itens e produto mais caro.
Conversor de moedas múltiplo
Declare array de valores em reais e cotações. Use for para converter cada valor para USD, EUR e GBP.
Jogo da senha
Gere senha de 4 dígitos aleatória. Declare array de tentativas. Use while para verificar cada tentativa.
Criar e exibir array
Crie um array com 5 frutas e exiba o array completo e cada elemento pelo índice.
push e pop
Crie array com 3 números. Adicione um com push() e remova o último com pop(). Exiba após cada operação.
length e acesso
Dado array [10,20,30,40,50], exiba: tamanho, primeiro, último e elemento do meio.
Modificar elementos
Crie array com 3 cores. Substitua a segunda cor por 'amarelo'.
includes e indexOf
Crie array de compras. Verifique se 'banana' existe com includes() e sua posição com indexOf().
Spread operator
Crie dois arrays de números. Combine-os usando spread operator (...).
Desestruturação
Dado array [nome, idade, cidade], use desestruturação para extrair cada valor.
slice
Dado array [1..10], use slice() para exibir: primeiros 3, últimos 3 e do índice 2 ao 5.
sort e reverse
Ordene nomes com sort() e reverse(). Mostre problemas do sort() com números.
join e split
Use join() para criar string de array e split() para voltar ao array.
forEach
Dado array de preços, use forEach() para exibir cada preço formatado.
map
Converta array de Celsius para Fahrenheit usando map().
filter
Filtre números pares e maiores que 10 de um array com filter().
find e findIndex
Encontre primeiro aprovado (nota >= 7) com find() e sua posição com findIndex().
some e every
Verifique se algum reprovou (some) e se todos aprovaram (every).
reduce
Use reduce() para somar números e encontrar o maior valor.
Ordenar números corretamente
Ordene números crescente e decrescente com sort() e comparador.
flat e flatMap
Use flat() e flatMap() em array aninhado.
Array de objetos
Crie array de funcionários. Use map, filter e reduce para análises.
Encadeamento de métodos
Encadeie filter().map().sort()[0] para achar o mais barato dos eletrônicos.
Remover duplicatas
Remova duplicatas de 3 formas: Set, filter+indexOf, reduce.
Agrupar por categoria
Use reduce() para agrupar produtos em objeto {categoria: [produtos]}.
Interseção e diferença
Calcule interseção, diferença e união entre dois arrays.
Ranking top 3
Ordene alunos por média e exiba top 3.
Matriz transposta
Calcule a transposta de matriz 3x3 usando map() aninhado.
Sistema de notas
Calcule média, filtre aprovados/reprovados e faça ranking com métodos encadeados.
Carrinho de compras
Calcule subtotais, total, item mais caro e desconto de 10% se > R$200.
Analisador de texto
Conte palavras únicas, encontre a mais frequente e as 3 mais longas.
Recomendação colaborativa
Encontre usuários com filmes em comum e recomende filmes não vistos.
Pipeline de dados
Filtre vendas do mês, agrupe por vendedor, calcule total e exiba ranking.
Primeira função
Crie uma função chamada saudacao() que exibe "Olá, mundo!" e chame-a.
Função com parâmetro
Crie uma função saudar(nome) que exibe "Olá, [nome]!" usando template literal.
Função que retorna
Crie uma função somar(a, b) que retorna a soma. Exiba o resultado.
Parâmetro padrão
Crie saudar(nome, saudacao = "Olá") que usa valor padrão. Teste com e sem o segundo argumento.
Função booleana
Crie ehPar(numero) que retorna true se par e false se ímpar.
Múltiplos retornos
Crie minMax(array) que retorna objeto {min, max} com menor e maior valor.
Função com loop
Crie tabuada(n) que exibe a tabuada do número n de 1 a 10.
Chamar função dentro de função
Crie dobro(n) que retorna n*2 e quadruplo(n) que usa dobro() para retornar n*4.
Arrow function básica
Reescreva somar(a,b), ehPar(n) e saudar(nome) como arrow functions.
Função como argumento
Crie aplicar(funcao, valor) que recebe uma função e um valor e retorna o resultado.
Recursão — fatorial
Crie função recursiva fatorial(n) sem usar loops.
Recursão — Fibonacci
Crie função recursiva fibonacci(n) que retorna o n-ésimo termo.
Rest parameters
Crie somarTudo(...numeros) que aceita qualquer quantidade de números e retorna a soma.
Closure
Crie criarContador() que retorna uma função. Cada chamada incrementa e retorna o contador.
Função geradora de funções
Crie criarMultiplicador(n) que retorna uma função que multiplica qualquer número por n.
Callback
Crie executarOperacao(a, b, operacao) que recebe dois números e uma função callback.
Memoização
Crie memoizar(fn) que recebe uma função e retorna versão com cache.
Currying
Crie somar(a)(b) usando currying. Crie adicionar5 = somar(5) para aplicação parcial.
Composição de funções
Crie compor(...fns) que aplica funções da direita para esquerda.
IIFE
Crie um módulo usando IIFE que encapsula variáveis privadas e expõe métodos públicos.
Decorador
Crie decorador cronometrar(fn) que mede o tempo de execução de qualquer função.
Generator function
Crie generator function* paresAte(n) que gera números pares de 0 até n usando yield.
Função pura vs impura
Demonstre a diferença entre função pura e impura. Refatore uma impura em pura.
Trampolim para recursão
Implemente trampolim(fn) para executar recursão sem estourar a call stack.
Pipeline operator simulado
Implemente pipe(...fns) que aplica funções da esquerda para direita. Crie pipeline de texto.
Sistema de validação funcional
Crie funções puras de validação: validarEmail, validarCPF, validarTelefone. Crie validarTudo que as compõe.
Calculadora funcional
Implemente calcular(op, a, b) que usa objeto para mapear string de operação para função.
Event emitter funcional
Crie criarEventEmitter() com on, off e emit usando closure. Implemente Observer pattern.
Analisador de código funcional
Analise array de funções: contar parâmetros, detectar puras, ordenar por complexidade.
Mini framework reativo
Implemente criarEstado(inicial) que retorna [obterEstado, definirEstado, inscrever]. Notifica inscritos ao mudar.
Criar objeto simples
Crie um objeto pessoa com propriedades: nome, idade, cidade. Exiba cada propriedade com ponto e colchetes.
Adicionar e remover propriedades
Crie objeto carro. Adicione propriedade "cor" depois de criado. Remova "ano" com delete.
Método no objeto
Crie objeto calculadora com métodos somar(a,b), subtrair(a,b), multiplicar(a,b).
this no objeto
Crie objeto pessoa com nome, sobrenome e método nomeCompleto() que usa this.
Object.keys, values, entries
Dado objeto produto, use Object.keys(), Object.values() e Object.entries() para listar.
Desestruturação de objeto
Dado objeto usuario, desestruture nome e email. Use alias para cidade como local.
Spread em objetos
Use spread para copiar, combinar e sobrescrever propriedades de objetos.
Propriedade computada
Crie objeto com propriedade computada usando variável como chave.
Objetos aninhados
Crie objeto empresa com objetos aninhados endereco e fundador. Acesse propriedades profundas.
Optional chaining
Dado objeto usuario que pode ou não ter endereço, use optional chaining (?.) para acessar cidade sem erro.
Factory function
Crie criarPessoa(nome, idade) que retorna objeto pessoa com propriedades e método apresentar().
Object.freeze e seal
Demonstre Object.freeze() (imutável) e Object.seal() (sem add/delete mas pode editar).
Clonagem profunda
Demonstre problema do spread (cópia rasa) com objetos aninhados. Implemente deep copy com JSON.
Getters e setters
Crie objeto circulo com raio, getter area e setter raio que valida valor positivo.
Iterar sobre objeto
Dado objeto notas, use Object.entries() com forEach para exibir cada aluno e nota com situação.
Transformar objeto em array
Dado objeto estoque, use Object.entries() + map() para criar array de objetos com status.
Mesclar e sobrescrever
Mescle objeto padrão com customizações usando spread. Customizações sobrescrevem padrões.
Objeto como namespace
Organize funções matemáticas dentro de MathUtils como namespace.
Validar objeto
Crie validarUsuario(obj) que verifica campos obrigatórios e tipos corretos.
Cache com objeto
Implemente cache simples usando objeto como dicionário: set, get, has, clear.
Proxy
Use Proxy para validação automática: idade entre 0-120, nome string não vazia.
Symbol como chave
Use Symbol para propriedades privadas. Symbol não aparece em Object.keys().
Object.defineProperty
Use Object.defineProperty para criar propriedade não-enumerável e somente-leitura.
Prototype chain
Crie objeto animal, crie cachorro com Object.create(animal) e sobrescreva método.
Imutabilidade com spread
Implemente funções puras para atualizar estado aninhado sem mutação.
ORM simples
Crie criarTabela() com inserir, buscar, atualizar, deletar, listarTodos.
Builder pattern
Implemente Builder para Pedido com métodos encadeáveis: setProduto, setQuantidade, build.
Observer com objetos
Implemente Observer com inscrever, desinscrever, notificar.
Schema validator
Crie criarSchema({campo: {type, required, min, max}}). Retorne método validar(dados).
State machine
Implemente máquina de estados para pedido: pendente → confirmado → enviado → entregue.
Primeira classe
Crie a classe Pessoa com constructor(nome, idade) e método apresentar() que exibe 'Olá, sou [nome] e tenho [idade] anos.'
Crie classe Circulo com #raio privado, getter area, getter perimetro e setter raio que valida valor positivo.
Método estático
Crie classe MathUtils com métodos estáticos: somar(a,b), media(...nums), ehPrimo(n).
toString e valueOf
Crie classe Produto com nome e preco. Implemente toString() e valueOf() para exibição e comparação numérica.
Contador de instâncias
Crie classe Conexao com campo estático #total. Cada instância incrementa o contador. Método estático getTotalConexoes().
Herança básica
Crie classe Animal com nome e som. Crie Cachorro extends Animal com método latir(). Use super() no constructor.
Override de método
Crie classe Forma com area() retornando 0. Crie Retangulo e Circulo que sobrescrevem area(). Teste polimorfismo.
instanceof e verificação de tipo
Crie hierarquia: Veiculo → Carro e Moto. Use instanceof para verificar tipos e função polimórfica.
Classe abstrata simulada
Simule classe abstrata Funcionario que lança erro em calcularSalario(). Crie CLT e PJ que implementam.
Mixin pattern
Crie mixins Nadador e Corredor. Aplique ambos em Triatleta usando Object.assign no prototype.
Encapsulamento completo
Crie ContaBancaria com #saldo privado. Métodos: depositar, sacar, transferir, extrato. Validar todos os valores.
Herança múltipla com mixin
Crie mixins Serializable (toJSON, fromJSON) e Validatable (validar). Aplique em Usuario.
Padrão Strategy
Implemente calculadora de frete com Strategy. Classes: FreteCorreios, FreteFedEx, FreteRetirada. Pedido recebe estratégia.
Padrão Singleton
Implemente Singleton para Configuracoes com campo estático privado. Apenas uma instância.
Iterator personalizado
Crie classe Intervalo com from e to. Implemente [Symbol.iterator] para iterar com for...of.
Padrão Observer com classes
Implemente Observer com classes: EventEmitter, PainelEstoque, AlertaEmail e AlertaSMS.
Classe genérica Stack
Implemente classe Stack (pilha) com: push, pop, peek, isEmpty, size, toString.
Herança em cadeia
Crie hierarquia: Veiculo → VeiculoMotorizado → Carro → CarroEletrico. Cada nível adiciona propriedades.
Padrão Decorator com classes
Implemente sistema de café com Decorator: Cafe, ComLeite, ComAcucar, ComChantilly. Encadeáveis.
Sistema escolar com POO
Implemente: Pessoa, Aluno (com notas, media), Professor (disciplina). Turma gerencia Alunos.
Classe LinkedList
Implemente lista encadeada com classes No e LinkedList. Métodos: append, prepend, delete, search, toArray, size.
Padrão Command
Implemente Command pattern para editor de texto: Inserir, Deletar, Substituir com execute() e undo().
Padrão Template Method
Implemente gerador de relatórios com Template Method. RelatorioPDF e RelatorioHTML sobrescrevem partes.
Herança vs Composição
Implemente sistema de personagens de jogo com herança e com composição. Compare os dois.
Framework mini ORM com classes
Implemente mini ORM: Model com static create, findAll, findById, update, delete. Usuario extends Model.
Sistema bancário completo
Implemente ContaBancaria, ContaCorrente (cheque especial), ContaPoupanca (rendimento). Banco gerencia contas.
Game engine básico
Crie engine de jogo RPG: Entity, Player, Enemy, Item. Batalha com turnos, vida, ataque, defesa, itens e XP.
Pipeline de processamento
Implemente Pipeline de dados: Pipeline, Stage, FilterStage, TransformStage, ValidateStage. Encadeáveis com pipe().
Sistema de plugins
Implemente sistema de plugins: App com registerPlugin, use. Plugins são classes com install(app).
Framework reativo com classes
Implemente mini framework reativo: Observable (subscribe, next, error, complete), Subject, map e filter.
Try/catch básico
Crie código que tenta converter string inválida em número e usa try/catch para tratar o erro graciosamente.
Finally
Simule abertura de conexão com banco. Use try/catch/finally onde finally sempre fecha a conexão.
Tipos de erro
Demonstre TypeError, ReferenceError e RangeError. Use try/catch para capturar cada um.
Throw personalizado
Crie função dividir(a, b) que lança erro personalizado se b for zero.
Error properties
Capture um erro e exiba suas propriedades: message, name, stack.
Export nomeado
Crie módulo matematica.js com export de funções. Importe nomeadamente.
Export default
Crie módulo calculadora.js com export default. Importe com nome customizado.
Import * as
Importe todos os exports usando import * as namespace.
Re-export
Crie arquivo index.js que re-exporta funções como barrel file.
Import dinâmico
Use import() dinâmico para carregar módulo condicionalmente.
Classe de erro customizada
Crie classes ValidationError, NotFoundError, NetworkError. Cada uma com código específico.
Error boundary pattern
Implemente withErrorBoundary(fn) que retorna {sucesso, dados, erro}.
Módulo de configuração
Crie módulo config.js com export const. Crie validarConfig().
Logger modular
Crie módulo logger.js com info, warn, error, debug prefixados com nível e timestamp.
Encadeamento de erros
Implemente busca de usuário que encadeia erros usando {cause}.
Módulo de validação
Crie módulo validacoes.js com funções de validação retornando {valido, mensagem}.
Pattern resultado
Implemente padrão Result: funções ok() e err(). Evita throw para controle de fluxo.
Módulos circulares
Demonstre problema de importação circular e refatore para remover.
Global error handler
Implemente handler global para erros não capturados no Node.js.
Módulo de formatação
Crie módulo formato.js com formatarMoeda, formatarData, formatarTelefone, formatarCPF.
Sistema de plugins com módulos
Sistema onde plugins são módulos carregados com import() dinâmico.
Middleware de erros
Implemente pipeline de middlewares com tratamento de erros Express-like.
Retry com backoff
Implemente retry(fn, tentativas, delayMs) com backoff exponencial.
Módulo de eventos assíncronos
Crie módulo eventBus.js com pub/sub assíncrono.
Circuit breaker
Implemente Circuit Breaker: após N falhas, abre por X segundos.
Framework de testes unitários
Implemente mini framework: describe, it, expect com toBe, toEqual, toThrow.
Sistema de log com módulos
Sistema de log modular: core, formatters, transports. Combináveis.
Dependency injection com módulos
Implemente DI container: register(nome, factory), get(nome). Resolução automática.
Error monitoring
Sistema de monitoramento: capturar, categorizar, contar, alertar acima de threshold.
SDK modular
SDK para API fictícia com autenticação, usuários, produtos. Erros customizados e retry.