Sobes.tech
Junior

Que formas de criar funções conhece?

sobes.tech IA

Resposta da IA

Existem várias formas de criar funções em JavaScript, cada uma com as suas próprias características:

  1. Declarações de Funções: Forma clássica de criar funções. São elevadas (hoisted) para cima do escopo, permitindo chamá-las antes da sua declaração.

    // Declaração de função com function
    function greet(name) {
      return "Olá, " + name + "!";
    }
    
  2. Expressões de Funções: A função é criada como parte de uma expressão e atribuída a uma variável. Não são elevadas (not hoisted) da mesma forma que as declarações de funções.

    // Expressão de função
    const greet = function(name) {
      return "Olá, " + name + "!";
    };
    
  3. Funções Arrow: Forma sintática abreviada para expressões de funções. Diferem das funções clássicas nas características de this e na ausência de seus próprios argumentos (arguments).

    // Função arrow
    const greet = (name) => {
      return "Olá, " + name + "!";
    };
    
    // Forma abreviada com retorno implícito
    const greetShort = (name) => "Olá, " + name + "!";
    
  4. Funções construtoras: Usadas para criar objetos. São chamadas com a palavra-chave new.

    // Função construtora
    function Person(name, age) {
      this.name = name;
      this.age = age;
    }
    
    // Criação de uma instância com o construtor
    const person1 = new Person("Aleksei", 30);
    
  5. Métodos de Classe: Em classes (açúcar sintático sobre herança prototípica), as funções são definidas como métodos.

    // Declaração de classe com método
    class Greeter {
      greet(name) {
        return "Olá, " + name + "!";
      }
    }
    
    // Criação de uma instância e chamada do método
    const greeter = new Greeter();
    const message = greeter.greet("Mundo");
    
  6. Expressões de Funções Imediatamente Invocadas (IIFE): Expressão de função que é executada imediatamente após a sua criação. Usada para criar um escopo local.

    // IIFE
    (function() {
      // Código dentro do IIFE
      console.log("Esta função é executada imediatamente!");
    })();
    

Cada método tem suas vantagens e desvantagens, e a escolha depende da tarefa e do contexto específicos.