La depuració és una part essencial del desenvolupament de programari. Ens ajuda a identificar i corregir errors en el nostre codi. En aquest tema, explorarem diverses tècniques i eines per depurar codi JavaScript de manera efectiva.
Continguts
Introducció a la Depuració
La depuració és el procés de trobar i resoldre errors o problemes en el codi. Els errors poden ser de diversos tipus, com ara errors de sintaxi, errors lògics o problemes de rendiment. La depuració ens permet entendre millor el comportament del nostre codi i assegurar-nos que funciona com esperem.
Ús de console.log
Una de les tècniques més senzilles i comunes per depurar codi JavaScript és utilitzar console.log
. Aquesta funció ens permet imprimir missatges a la consola del navegador, la qual cosa ens ajuda a veure el valor de les variables i el flux del programa.
Exemple:
function suma(a, b) { console.log('Valor de a:', a); console.log('Valor de b:', b); return a + b; } const resultat = suma(5, 3); console.log('Resultat:', resultat);
Explicació:
En aquest exemple, utilitzem console.log
per imprimir els valors de les variables a
i b
abans de retornar la seva suma. Això ens ajuda a verificar que els valors són correctes.
Depurador del Navegador
Els navegadors moderns com Chrome, Firefox i Edge tenen eines de desenvolupador integrades que inclouen un depurador. Aquestes eines ens permeten inspeccionar el codi, establir punts de ruptura (breakpoints) i veure l'estat de les variables en temps real.
Accés a les Eines de Desenvolupador:
- Chrome: F12 o Ctrl+Shift+I (Cmd+Opt+I en Mac)
- Firefox: F12 o Ctrl+Shift+I (Cmd+Opt+I en Mac)
- Edge: F12 o Ctrl+Shift+I (Cmd+Opt+I en Mac)
Exemple:
function resta(a, b) { debugger; // Pausa l'execució aquí return a - b; } const resultat = resta(10, 4); console.log('Resultat:', resultat);
Explicació:
La paraula clau debugger
pausa l'execució del codi en aquest punt i obre el depurador del navegador. Això ens permet inspeccionar l'estat del programa en aquest moment.
Punts de Ruptura (Breakpoints)
Els punts de ruptura ens permeten pausar l'execució del codi en una línia específica. Això és útil per inspeccionar l'estat del programa i veure com canvien les variables al llarg del temps.
Establir un Punt de Ruptura:
- Obre les eines de desenvolupador del navegador.
- Navega a la pestanya "Sources" (Fonts).
- Troba el fitxer JavaScript que vols depurar.
- Fes clic a la línia on vols establir el punt de ruptura.
Exemple:
function multiplicacio(a, b) { return a * b; } const resultat = multiplicacio(6, 7); console.log('Resultat:', resultat);
Explicació:
Podem establir un punt de ruptura a la línia return a * b;
per pausar l'execució i inspeccionar els valors de a
i b
.
Depuració de Codi Asíncron
La depuració de codi asíncron pot ser més complexa, ja que les operacions no es completen immediatament. Les eines de desenvolupador dels navegadors també suporten la depuració de codi asíncron, com ara callbacks, promeses i async/await
.
Exemple amb async/await
:
async function fetchData() { try { const response = await fetch('https://api.example.com/data'); const data = await response.json(); console.log('Dades:', data); } catch (error) { console.error('Error:', error); } } fetchData();
Explicació:
Podem establir punts de ruptura dins de les funcions asíncrones per pausar l'execució i inspeccionar l'estat del programa.
Consells i Trucs
- Utilitza
console.error
per a Errors: Utilitzaconsole.error
per imprimir missatges d'error a la consola. Això ajuda a distingir els errors dels missatges informatius. - Utilitza
console.table
per a Dades Tabulars:console.table
és útil per imprimir arrays o objectes en format tabular. - Utilitza
console.group
per Agrupar Missatges:console.group
iconsole.groupEnd
permeten agrupar missatges a la consola, facilitant la lectura.
Exemple:
console.group('Detalls de l'Usuari'); console.log('Nom:', 'Joan'); console.log('Edat:', 30); console.groupEnd();
Exercicis Pràctics
Exercici 1: Depuració amb console.log
- Escriu una funció que calculi la suma de tots els elements d'un array.
- Utilitza
console.log
per imprimir els valors intermedis i verificar que la funció funciona correctament.
Solució:
function sumaArray(arr) { let suma = 0; for (let i = 0; i < arr.length; i++) { console.log('Element:', arr[i]); suma += arr[i]; } return suma; } const resultat = sumaArray([1, 2, 3, 4, 5]); console.log('Suma Total:', resultat);
Exercici 2: Depuració amb Punts de Ruptura
- Escriu una funció que multipliqui dos nombres.
- Estableix un punt de ruptura a la línia de retorn i inspecciona els valors de les variables.
Solució:
function multiplicacio(a, b) { return a * b; } const resultat = multiplicacio(6, 7); console.log('Resultat:', resultat);
Estableix un punt de ruptura a la línia return a * b;
i inspecciona els valors de a
i b
.
Conclusió
La depuració és una habilitat essencial per a qualsevol desenvolupador. Utilitzant tècniques com console.log
, el depurador del navegador i els punts de ruptura, podem identificar i corregir errors de manera més eficient. Practica aquestes tècniques amb els exercicis proporcionats per millorar les teves habilitats de depuració.
JavaScript: De Principiant a Avançat
Mòdul 1: Introducció a JavaScript
- Què és JavaScript?
- Configuració del Teu Entorn de Desenvolupament
- El Teu Primer Programa en JavaScript
- Sintaxi i Conceptes Bàsics de JavaScript
- Variables i Tipus de Dades
- Operadors Bàsics
Mòdul 2: Estructures de Control
- Declaracions Condicionals
- Bucles: for, while, do-while
- Declaracions Switch
- Gestió d'Errors amb try-catch
Mòdul 3: Funcions
- Definició i Crida de Funcions
- Expressions de Funció i Funcions Fletxa
- Paràmetres i Valors de Retorn
- Àmbit i Tancaments
- Funcions d'Ordre Superior
Mòdul 4: Objectes i Arrays
- Introducció als Objectes
- Mètodes d'Objecte i Paraula Clau 'this'
- Arrays: Conceptes Bàsics i Mètodes
- Iteració sobre Arrays
- Desestructuració d'Arrays
Mòdul 5: Objectes i Funcions Avançades
- Prototips i Herència
- Classes i Programació Orientada a Objectes
- Mòduls i Importació/Exportació
- JavaScript Asíncron: Callbacks
- Promeses i Async/Await
Mòdul 6: El Model d'Objectes del Document (DOM)
- Introducció al DOM
- Selecció i Manipulació d'Elements del DOM
- Gestió d'Esdeveniments
- Creació i Eliminació d'Elements del DOM
- Gestió i Validació de Formularis
Mòdul 7: APIs del Navegador i Temes Avançats
- Emmagatzematge Local i de Sessió
- Fetch API i AJAX
- WebSockets
- Service Workers i Aplicacions Web Progressives (PWAs)
- Introducció a WebAssembly
Mòdul 8: Proves i Depuració
- Depuració de JavaScript
- Proves Unitàries amb Jest
- Proves d'Integració
- Proves de Cap a Cap amb Cypress
Mòdul 9: Rendiment i Optimització
- Optimització del Rendiment de JavaScript
- Gestió de Memòria
- Manipulació Eficient del DOM
- Càrrega Per Mandat i Divisió de Codi
Mòdul 10: Frameworks i Llibreries de JavaScript
- Introducció a React
- Gestió d'Estat amb Redux
- Conceptes Bàsics de Vue.js
- Conceptes Bàsics d'Angular
- Triar el Framework Adequat