Atividades

Lista de Exercícios: Funções em JavaScript

Nível Básico (Questões 1-8)

  1. O que é uma função em JavaScript e quais são os três principais benefícios de utilizá-las?

  2. No código function calcularMedia(nota1, nota2) { return (nota1 + nota2) / 2; }, identifique o que é:

    • A palavra-chave

    • O nome da função

    • Os parâmetros

    • O valor de retorno

  3. Qual é a diferença fundamental entre "parâmetros" e "argumentos" em uma função?

  4. Crie uma função anônima, armazene-a em uma variável chamada despedida e faça com que ela imprima "Até logo!" no console.

  5. Qual é a principal vantagem das "Arrow Functions" (Funções de Seta) em comparação com a declaração tradicional de função?

  6. Converta a seguinte função para uma "Arrow Function" de uma única linha:

    function quadrado(n) {
      return n * n;
    }
  7. Uma função precisa obrigatoriamente ter uma instrução return? Explique a diferença entre uma função com e sem return.

  8. Escreva uma função chamada boasVindas que recebe um nome como argumento e imprime no console a mensagem: "Bem-vindo(a), [nome]! 😊".


Nível Intermediário (Questões 9-18)

  1. Explique o que é a "pilha de chamadas" (call stack) e como ela funciona quando uma função é invocada. Dica: Pense em uma pilha de pratos.

  2. É apresentado três formas de criar uma função: declaração tradicional, expressão de função e arrow function. Qual delas sofre "hoisting" e o que isso significa na prática?

  3. Qual será o resultado do código abaixo e por quê?

  4. De acordo com as convenções de nomeação, qual dos seguintes nomes é o mais adequado para uma função que verifica se um usuário está logado: check, logado, verificarLogin ou funcao_de_login? Justifique.

  5. O que a função a seguir retornará ao ser chamada com calcular(10, 5) e por que esse é considerado um erro comum?

  6. O que é uma IIFE (Immediately Invoked Function Expression) e qual é uma de suas principais utilidades?

  7. O que acontece se você chamar a função soma(5, 10, 15) abaixo? E se você chamar soma(5)?

  8. Como você pode modificar a função saudacao para que, ao ser chamada sem argumentos, ela imprima "Olá, visitante!" em vez de "Olá, undefined"?

  9. Explique o que é uma "função de ordem superior" (higher-order function) e dê um exemplo.

  10. Qual será o valor da variável resultado no final deste código e por quê?


Nível Avançado (Questões 19-30)

  1. Explique o conceito de "Closure" (fechamento) com base no exemplo da função criarContador fornecido neste material.

  2. O que a seguinte função, que utiliza o parâmetro "rest" (...), retornará ao ser chamada com somarTudo(10, 20, 30, 40)?

  3. Qual é a diferença prática entre setTimeout e setInterval?

  4. No contexto de funções, o que é um "callback"? Crie uma função simples chamada processar que recebe um número e um callback, e executa o callback passando o dobro desse número como argumento.

  5. O que é uma função recursiva? Qual é o elemento essencial que toda função recursiva deve ter para evitar um "stack overflow" (estouro de pilha)?

  6. Por que o uso do Function constructor (new Function(...)) é geralmente desaconselhado?

  7. O que o objeto arguments representa dentro de uma função? Por que o parâmetro "rest" (...) é considerado uma alternativa mais moderna?

  8. Analise o código abaixo. O que acontecerá quando a linha soma() for executada? Explique o erro.

  9. Por que a primeira chamada de mostrarMensagem() funciona, mas a segunda gera um erro?

  10. Desafio de Código 1: Crie a função avaliarAluno proposta neste material, que recebe duas notas e retorna "Aprovado", "Recuperação" ou "Reprovado" com base na média.

  11. Desafio de Código 2: Crie a função calcularNotas que usa o parâmetro "rest" para aceitar um número indefinido de notas e retornar a média delas.

  12. Desafio de Código 3: Crie a função avançada repetir, que recebe uma função de callback e um número n, e executa o callback n vezes.

Atualizado