Sobes.tech
Intern

Quali funzioni esistono in JavaScript?

sobes.tech AI

Risposta dell'AI

In JavaScript, esistono i seguenti tipi di funzioni:

  • Dichiarazioni di funzioni (Function Declarations): Sintassi di base per definire una funzione. Sono sollevate (hoisted) durante la compilazione.

    function sayHello() {
      // Corpo della funzione
      console.log("Ciao!");
    }
    
  • Espressioni di funzione (Function Expressions): Una funzione viene assegnata a una variabile. Non sono sollevate. Possono essere nominate o anonime.

    const greetUser = function(name) {
      // Corpo della funzione
      console.log(`Ciao, ${name}!`);
    };
    
  • Funzioni arrow (Arrow Functions): Sintassi più concisa introdotta in ES6. Hanno comportamenti specifici con this.

    const add = (a, b) => a + b;
    
  • Metodi degli oggetti (Object Methods): Funzioni definite come proprietà di un oggetto.

    const user = {
      name: "Ivan",
      sayName: function() {
        console.log(this.name);
      }
    };
    
  • Funzioni generator (Generator Functions): Funzioni che possono sospendere e riprendere l'esecuzione usando yield. Restituiscono un iteratore.

    function* counter() {
      let i = 0;
      while (true) {
        yield i++;
      }
    }
    
  • Funzioni asincrone (Async Functions): Funzioni che lavorano con promesse e consentono di usare await per attendere la risoluzione delle promesse.

    async function fetchData() {
      const response = await fetch("https://api.example.com/data");
      const data = await response.json();
      return data;
    }
    
  • Funzioni costruttore (Constructor Functions): Funzioni usate con l'operatore new per creare oggetti. Approccio tradizionale di OOP prima dell'introduzione delle classi.

    function Person(name, age) {
      this.name = name;
      this.age = age;
    }
    
    const person1 = new Person("Petr", 30);
    
  • Funzioni callback (Callback Functions): Funzioni passate come argomento ad un'altra funzione per essere eseguite in un momento specifico.

    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);
    });
    
  • Espressioni di funzioni immediatamente invocate (IIFE - Immediately Invoked Function Expressions): Funzioni che vengono eseguite subito dopo la loro definizione. Utilizzate per creare un ambito locale.

    (function() {
      // Codice locale
      const secret = "segreto";
      console.log(secret);
    })();
    

Ogni tipo di funzione ha le sue caratteristiche di sintassi, ambito (this) e scenari di utilizzo.