Instruções Gerais:

  • Resolva as atividades em ordem progressiva de maturidade.
  • Cada nível adiciona requisitos técnicos, tratamento de erros e casos de borda reais.
  • Consulte o gabarito comentado ao final de cada questão para autoavaliação.

🎯 Nível 1: Fundamentos

Problema 13.1 — Escopo de Bloco (let/const), Arrow Functions e Template Literals

Contexto: Escopo de Bloco (let/const), Arrow Functions e Template Literals no contexto de JavaScript Moderno (ES6+): Closures, Promises e Event Loop.

Requisitos de Execução:

  1. Criar funções puras com arrow functions e interpolação de strings.

Resultado Esperado

JavaScript moderno ES6+ com sintaxe limpa e previsível.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_13_1_SeuNome
  2. Envie na tarefa: Atividade Cap 13 - JavaScript Moderno (ES6+): Closures, Promises e Event Loop
🔑 Gabarito de Código & Solução Comentada
const formatarPreco = (valor, moeda = 'BRL') => {
  return new Intl.NumberFormat('pt-BR', { style: 'currency', currency: moeda }).format(valor);
};

const precoFinal = formatarPreco(1450.75);
console.log(`Preco do produto: ${precoFinal}`);

🔍 Nível 2: Prática

Problema 13.2 — Closures e Encapsulamento de Estado Privado

Contexto: Closures e Encapsulamento de Estado Privado no contexto de JavaScript Moderno (ES6+): Closures, Promises e Event Loop.

Requisitos de Execução:

  1. Criar fábrica de contadores com closure mantendo variável interna inacessível externamente.

Resultado Esperado

Encapsulamento seguro de variáveis com closures em JavaScript.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_13_2_SeuNome
  2. Envie na tarefa: Atividade Cap 13 - JavaScript Moderno (ES6+): Closures, Promises e Event Loop
🔑 Gabarito de Código & Solução Comentada
function criarContador(inicial = 0) {
  let count = inicial;
  return {
    incrementar: () => ++count,
    obterValor: () => count
  };
}

const contador = criarContador(10);
contador.incrementar();
console.log(`Valor do contador protegido: ${contador.obterValor()}`);

⚡ Nível 3: Integração

Problema 13.3 — Promises e Async/Await com Tratamento de Erros (try/catch)

Contexto: Promises e Async/Await com Tratamento de Erros (try/catch) no contexto de JavaScript Moderno (ES6+): Closures, Promises e Event Loop.

Requisitos de Execução:

  1. Executar múltiplas chamadas assíncronas com Promise.all e capturar falhas.

Resultado Esperado

Fluxo assíncrono executado na Event Loop do motor V8.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_13_3_SeuNome
  2. Envie na tarefa: Atividade Cap 13 - JavaScript Moderno (ES6+): Closures, Promises e Event Loop
🔑 Gabarito de Código & Solução Comentada
async function carregarDados() {
  const p1 = Promise.resolve('Usuario');
  const p2 = Promise.resolve('Permissoes');
  const [user, perms] = await Promise.all([p1, p2]);
  return { user, perms };
}

carregarDados().then(res => console.log('Dados consolidados:', res));

🏆 Nível 4: Desafio Corporativo

Problema 13.4 — Padrão Observer / EventEmitter para Eventos Desacoplados

Contexto: Padrão Observer / EventEmitter para Eventos Desacoplados no contexto de JavaScript Moderno (ES6+): Closures, Promises e Event Loop.

Requisitos de Execução:

  1. Implementar barramento de eventos pub/sub com métodos on, emit e off.

Resultado Esperado

Barramento de eventos corporativo para arquitetura reativa.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_13_4_SeuNome
  2. Envie na tarefa: Atividade Cap 13 - JavaScript Moderno (ES6+): Closures, Promises e Event Loop
🔑 Gabarito de Código & Solução Comentada
class EventEmitter {
  constructor() { this.eventos = {}; }
  on(evento, callback) {
    (this.eventos[evento] = this.eventos[evento] || []).push(callback);
  }
  emit(evento, dados) {
    (this.eventos[evento] || []).forEach(cb => cb(dados));
  }
}

const bus = new EventEmitter();
bus.on('LOGIN', u => console.log(`Evento de login auditado para: ${u}`));
bus.emit('LOGIN', 'admin_corp');