Sobes.tech
Intern

Que funções existem em JavaScript?

sobes.tech IA

Resposta da IA

No JavaScript, existem os seguintes tipos de funções:

  • Declarações de funções (Function Declarations): Sintaxe básica para definir uma função. São elevadas (hoisted) durante a compilação.

    function sayHello() {
      // Corpo da função
      console.log("Olá!");
    }
    
  • Expressões de funções (Function Expressions): Uma função é atribuída a uma variável. Não são elevadas. Podem ser nomeadas ou anónimas.

    const greetUser = function(name) {
      // Corpo da função
      console.log(`Olá, ${name}!`);
    };
    
  • Funções arrow (Arrow Functions): Sintaxe mais concisa introduzida no ES6. Têm comportamentos específicos com this.

    const add = (a, b) => a + b;
    
  • Métodos de objetos (Object Methods): Funções definidas como propriedades de um objeto.

    const user = {
      name: "Ivan",
      sayName: function() {
        console.log(this.name);
      }
    };
    
  • Funções geradoras (Generator Functions): Funções que podem pausar e retomar a sua execução usando yield. Retornam um iterador.

    function* counter() {
      let i = 0;
      while (true) {
        yield i++;
      }
    }
    
  • Funções assíncronas (Async Functions): Funções que trabalham com promessas e permitem usar await para aguardar a resolução de promessas.

    async function fetchData() {
      const response = await fetch("https://api.example.com/data");
      const data = await response.json();
      return data;
    }
    
  • Funções construtoras (Constructor Functions): Funções usadas com o operador new para criar objetos. Abordagem tradicional de POO antes do surgimento das classes.

    function Person(name, age) {
      this.name = name;
      this.age = age;
    }
    
    const person1 = new Person("Petr", 30);
    
  • Funções de callback (Callback Functions): Funções passadas como argumentos para outra função para serem executadas em um momento específico.

    function processArray(arr, callback) {
      for (let i = 0; i < arr.length; i++) {
        callback(arr[i]);
      }
    }
    
    processArray([1, 2, 3], function(item) {
      console.log(item * 2);
    });
    
  • Expressões de funções imediatamente invocadas (IIFE - Immediately Invoked Function Expressions): Funções que são executadas imediatamente após a sua definição. Usadas para criar um escopo local.

    (function() {
      // Código local
      const secret = "segredo";
      console.log(secret);
    })();
    

Cada tipo de função tem as suas próprias características de sintaxe, escopo (this) e cenários de uso.