Funcions, Arrow Functions i el Context de this
Les funcions són blocs de codi reutilitzables que encapsulen una sèrie d'instruccions per executar una tasca concreta. Permeten estructurar el codi, millorar la llegibilitat i reutilitzar comportaments.
Beneficis de fer servir funcions
- Reutilització: escrius una vegada, reutilitzes tants cops com vulguis.
- Modularitat: cada funció té una responsabilitat.
- Mantenibilitat: canvis en una funció afecten a tot arreu on s’utilitza.
- Claredat: codi més llegible i amb noms descriptius.
Estructura bàsica d'una funció
function saludar(nom) {
return `Hola, ${nom}!`;
}
- Paràmetres: variables que reps (
nom) - Arguments: valors que passes (
"Joan") - return: indica el valor que retorna la funció
Bones pràctiques
- Usa noms descriptius (
calcularMitjana,validarUsuari) - Utilitza camelCase
- Comença amb verbs
- Evita noms genèrics com
funcion1 - Documenta amb JSDoc si és complexa
/**
* Calcula l’àrea d’un triangle.
* @param {number} base
* @param {number} altura
* @returns {number}
*/
function areaTriangulo(base, altura) {
return (base * altura) / 2;
}
Activitats bàsiques
- Crea
calcularAreaRectangle(base, altura) - Escriu
esPar(num)que retorni true/false - Fes una funció que imprimeixi "Hola" X cops
- Escriu
convertirEuroADolar(euro, canvi) - Escriu
calcularNotaFinal(t1, t2, ex)amb mitjana ponderada
Expresions de funcions
const sumar = function (a, b) {
return a + b;
};
- Pot ser anònima
- No fa hoisting
Arrow functions (funcions de fletxa)
Introduïdes a ES6, tenen una sintaxi més compacta i no tenen el seu propi this.
const sumar = (a, b) => a + b;
Si hi ha més d’una instrucció:
const saludar = (nom) => {
console.log("Hola");
return nom;
};
Característiques especials
- Sintaxi concisa
- No tenen
this,argumentsnisuperpropis - Són sempre expressions, no declaracions
- Ideal per funcions simples o callbacks
Comparació de sintaxi
// Declaració
function sumar(a, b) {
return a + b;
}
// Expressió
const sumar = function (a, b) {
return a + b;
};
// Arrow
const sumar = (a, b) => a + b;
Activitats funcions fletxa
- Converteix
saludar(nom)en arrow - Passa
calcularArea(base, alt)a arrow - Fes una arrow que comprovi si un número és divisible per 3
- Escriu una arrow que retorni el primer caràcter d’una cadena
El context de this
this fa referència a l’objecte des d’on s’invoca la funció. El seu comportament depèn de com i on es fa la crida.
En context global
console.log(this); // window (navegador)
En funcions normals
function mostrar() {
console.log(this);
}
mostrar(); // `this` = window
En objectes
const persona = {
nom: "Joan",
parlar: function () {
console.log(this.nom); // "Joan"
},
};
En funcions fletxa
const persona = {
nom: "Joan",
parlar: () => {
console.log(this.nom); // `this` no és "persona"
},
};
Mètodes, constructores i mode estricte
En class constructors
class Persona {
constructor(nom) {
this.nom = nom;
}
saludar() {
console.log(`Hola, sóc ${this.nom}`);
}
}
En mode estricte
"use strict";
function test() {
console.log(this); // undefined
}
Activitats amb this
- Crea un objecte
usuariambnomisaludar() - Afegeix
saludar()com a funció fletxa i observa el resultat - Crea una classe
Cotxeambmarcaipresentar() - Fes servir
thisdins un event listener sobre un botó
Aquest capítol t’ajuda a dominar les funcions i entendre el context real d’execució. Saber quan i com usar this, return, i quina sintaxi escollir et farà escriure codi més robust i llegible.