Ves al contingut principal

Funcions anònimes

Les funcions anònimes a JavaScript són funcions que es defineixen sense un nom assignat. Són una part fonamental del llenguatge, ja que permeten tractar les funcions com a valors (objectes de primera classe), cosa que facilita el seu ús com a callbacks, tancaments (closures) i expressions de funció.

Característiques i Ús Principal

Una funció anònima no es pot cridar directament pel seu nom, ja que no en té. S'utilitzen principalment en els següents contextos:

1. Expressions de Funció (Assignació a Variables)

El mètode més comú és assignar la funció anònima a una variable o constant. Això permet cridar-la posteriorment utilitzant el nom de la variable.

JavaScript
// Funció anònima assignada a la variable 'saluda'
const saluda = function() {
    console.log("Hola! Sóc una funció anònima assignada.");
};

saluda(); // Es crida usant el nom de la variable.

2. Funció de Fletxa (Arrow Functions)

Les funcions de fletxa (introduïdes a ES6) són la sintaxi moderna i concisa per crear funcions anònimes.

JavaScript
// Funció anònima de fletxa assignada a 'doble'
const doble = (x) => x * 2; 

console.log(doble(5)); // 10

Casos d'Ús Essencials

Les funcions anònimes són indispensables per a diverses tasques clau en JavaScript:

1. Funcions de Callback

S'utilitzen quan una funció (A) necessita passar una altra funció (B) com a argument per a ser executada més tard (callback).

JavaScript
// Una funció anònima utilitzada com a callback per al mètode map
const nombres = [1, 2, 3];

const resultats = nombres.map(function(n) {
    return n * 10;
});
// resultats és [10, 20, 30]

2. Temporitzadors

Són essencials per als mètodes de temporització de l'objecte window, com setTimeout i setInterval.

JavaScript
// La funció s'executarà només una vegada després de 2 segons
setTimeout(function() {
    console.log("Missatge mostrat després d'un temps.");
}, 2000);

3. Gestors d'Esdeveniments (Event Handlers)

S'utilitzen per definir la lògica que s'ha d'executar quan es produeix un esdeveniment (p. ex., un clic de botó).

JavaScript
document.getElementById('elMeuBoto').addEventListener('click', function() {
    alert('Has fet clic al botó!');
    // Aquesta funció anònima només s'executa amb el clic
});

4. IIFE (Immediately Invoked Function Expressions)

Una IIFE és una funció anònima que es defineix i s'executa immediatament. Això és útil per crear un àmbit (scope) privat i evitar que les variables es "fugin" a l'àmbit global.

JavaScript
// S'executa immediatament i 'contador' és privat
(function() {
    var contador = 0; 
    console.log("IIFE executada. El comptador és a 0.");
})(); 

// console.log(contador); // Error: contador no està definit

Avantatges

Avantatge Explicació
Concisió Especialment amb les funcions de fletxa, redueixen el codi necessari per a operacions simples.
Encapsulació Són perfectes per als callbacks o les IIFE, ja que tanquen la lògica necessària exactament on es necessita, sense contaminar l'àmbit global amb noms de funció innecessaris.
Flexibilitat Permeten passar la lògica com a dades (arguments) a altres funcions d'ordre superior (map, filter, reduce).