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ê?

    let animal = "gato";
    
    function mostrarAnimal() {
      let animal = "cachorro";
      console.log(animal);
    }
    
    mostrarAnimal();
    console.log(animal);
  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?

    function calcular(a, b) {
      let resultado = a - b;
      // Esqueci algo aqui
    }
  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)?

    function soma(a, b) {
      return a + b;
    }
  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"?

    function saudacao(nome) {
      console.log("Olá, " + nome);
    }
  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ê?

    function mostrarAlerta() {
        return console.log("Executando...");
    }
    let resultado = mostrarAlerta();

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)?

    function somarTudo(...numeros) {
      return numeros.reduce((total, atual) => total + atual, 0);
    }
  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.

    function soma() {
      return 2 + 2;
    }
    let soma = 10;
    
    console.log(soma());
  9. Por que a primeira chamada de mostrarMensagem() funciona, mas a segunda gera um erro?

    // Caso 1
    mostrarMensagem();
    function mostrarMensagem() {
      console.log("Olá!");
    }
    
    // Caso 2
    mostrarMensagem2();
    const mostrarMensagem2 = function() {
      console.log("Oi!");
    };
  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.

Last updated