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.
// 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.
// 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).
// 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.
// 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ó).
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.
// 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). |