W3docs

JavaScript console API

La Console API è uno strumento fondamentale per i sviluppatori web, che consente di interagire con la console del browser per il debugging, la segnalazione di errori e il logging nelle applicazioni JavaScript.

Introduzione alla Console API

La Console API è l'insieme dei metodi console.* che permettono al tuo JavaScript di comunicare con la console per sviluppatori — il pannello che apri con i DevTools del browser (Chrome, Firefox, Edge, Safari) o su cui Node.js stampa nel tuo terminale. È lo strumento di debugging più utilizzato in JavaScript: con una sola riga puoi ispezionare un valore, misurare il tempo di un'operazione o stampare uno stack trace, senza modificare il comportamento del programma.

Questa pagina illustra i metodi che utilizzerai ogni giorno — log, info, warn, error, table, dir, group, time, count, assert e trace — oltre agli specificatori di formato (%s, %d, %c) che controllano come vengono stampati i valori.

La console è disponibile globalmente, quindi puoi chiamare questi metodi ovunque — in uno script per il browser, nella console dei DevTools o in un file Node.js.

Logging di base con console.log()

console.log() stampa informazioni nella console. Accetta qualsiasi numero di argomenti di qualsiasi tipo e li separa con spazi — stringhe, numeri, array e object vengono tutti formattati automaticamente.

javascript— editable

Registrare un'etichetta accanto a un valore ('Value of y:', y) è la tecnica di debugging più semplice e comune — mantiene l'output leggibile quando diversi log scorrono velocemente.

Livelli di log: info, warn ed error

console.info(), console.warn() e console.error() funzionano esattamente come console.log() ma portano un livello di gravità. Il browser applica uno stile diverso a ciascuno (i warning hanno uno sfondo giallo, gli error uno rosso) e — cosa importante — i DevTools consentono di filtrare per livello, così puoi nascondere il rumore e mostrare solo gli error quando una pagina non funziona correttamente.

javascript— editable

Usa console.warn() per situazioni recuperabili ma che meritano attenzione (un'opzione deprecata, un campo opzionale mancante) e console.error() per i veri fallimenti. Abbina console.error() a una corretta gestione degli errori con try...catch affinché i fallimenti vengano sia segnalati che gestiti.

Formattare l'output con gli specificatori di formato

Quando il primo argomento di un metodo console contiene uno specificatore di formato, gli argomenti rimanenti vengono sostituiti al suo posto. Gli specificatori più comuni sono:

  • %s — una string
  • %d (o %i) — un numero intero
  • %f — un numero in virgola mobile
  • %o / %O — un object
  • %c — applica uno stile CSS all'output (solo browser)
javascript— editable

In Node.js lo stile %c viene ignorato, ma il testo viene comunque stampato. Gli specificatori di formato sono utili quando si desidera un output pulito, simile a una frase, invece di valori separati da virgole.

Visualizzare dati strutturati

Tabelle con console.table()

console.table() visualizza un array di object (o un object di object) come una tabella ordinabile — molto più facile da esaminare rispetto all'output nidificato di console.log().

javascript— editable

Ispezionare object con console.dir()

console.dir() stampa un elenco interattivo e navigabile delle proprietà di un object. È particolarmente utile per i nodi DOM: console.log(element) mostra l'HTML renderizzato, mentre console.dir(element) mostra l'elemento come object JavaScript con tutte le sue proprietà.

javascript— editable

Organizzare e contare i log

Raggruppare con console.group()

console.group() e console.groupEnd() indentano e (nel browser) contraggono i log compresi tra di loro — ideali per raggruppare output correlati durante una sessione di debugging complessa.

javascript— editable

Usa console.groupCollapsed() al posto di console.group() per avviare il gruppo già contratto per impostazione predefinita.

Contare con console.count()

console.count(label) stampa quante volte è stato chiamato con quella label — un modo rapido per vedere quante volte una funzione viene eseguita o un ramo viene percorso, senza dover mantenere una variabile contatore.

javascript— editable

Asserzioni e stack trace

Asserzioni con console.assert()

console.assert(condition, message) registra il messaggio solo quando la condizione è falsa. Quando la condizione è vera non produce alcun output, quindi puoi lasciare i controlli di integrità attivi senza ingombrare la console.

javascript— editable

Stack trace con console.trace()

console.trace() stampa lo stack delle chiamate corrente — la catena di chiamate di funzione che ha portato a questo punto. È il modo più rapido per rispondere alla domanda "come è arrivata l'esecuzione qui?"

javascript— editable

Misurare le prestazioni

console.time(label) avvia un timer e console.timeEnd(label) lo ferma e stampa i millisecondi trascorsi. Usa la stessa label per entrambe le chiamate. È un'alternativa leggera a performance.now() per individuare operazioni lente.

javascript— editable

Dove andare dopo

La Console API è una parte di un più ampio toolkit di debugging. Per i breakpoint, il pannello Sources e il resto dei DevTools, consulta debugging del DOM e strumenti. E mentre le chiamate a console sono ottime durante lo sviluppo, preferisci dei descrittivi commenti nel codice per le spiegazioni che devono rimanere nel sorgente in modo permanente — e ricordati di rimuovere le chiamate console.log superflue prima del rilascio in produzione.

Conclusione

La Console API offre un modo rapido e senza configurazione per capire cosa sta facendo il tuo codice: log/info/warn/error per i messaggi con livello di gravità, table e dir per i dati strutturati, group e count per organizzare l'output, time per le prestazioni, e assert/trace per individuare e spiegare i bug. Combinati con gli specificatori di formato, questi metodi coprono la grande maggioranza del debugging JavaScript quotidiano.

Esercitazione

Pratica
Quali delle seguenti affermazioni descrivono accuratamente le capacità della Console API di JavaScript?
Quali delle seguenti affermazioni descrivono accuratamente le capacità della Console API di JavaScript?
Was this page helpful?