La visualizzazione di messaggi sulla console è un modo molto semplice per diagnosticare e risolvere i problemi minori nel codice.

Ma lo sapevi che oltre a un semplice log c'è di più in console? In questo articolo, ti mostrerò come stampare sulla console in JS, e inoltre tutte le cose che console può fare e che probabilmente non sai .

Editor Multi-line della Console di Firefox

Se non hai mai utilizzato la modalità editor multilinea in Firefox, dovresti provarlo subito!

Basta aprire la console, Ctrl+Shift+K o F12, e in alto a destra vedrai un pulsante che dice "Switch to multi-line editor mode". In alternativa, puoi premere Ctrl+B.

Questo ti dà un editor di codice multilinea direttamente all'interno di Firefox.

console.log

Iniziamo con un esempio di log molto semplice.

let x = 1
console.log(x)

Scrivilo nella console di Firefox ed esegui il codice. Puoi fare clic sul pulsante "Run" o premere Ctrl+Enter.

In questo esempio, dovremmo vedere "1" nella console. Abbastanza semplice, vero?

Valori multipli

Sapevi che puoi includere più valori? Aggiungi una stringa all'inizio per identificare facilmente cosa stai stampando.

let x = 1
console.log("x:", x)

Ma cosa succede se abbiamo più valori che vogliamo visualizzare?

let x = 1
let y = 2
let z = 3

Invece di digitare console.log() tre volte, possiamo includerli tutti. Se lo desideriamo, possiamo anche aggiungere una stringa prima di ciascuno di essi.

let x = 1
let y = 2
let z = 3
console.log("x:", x, "y:", y, "z:", z)

Ma è troppo lavoro. Basta racchiuderli in parentesi graffe! Ora ottieni un oggetto con i valori nominati.

let x = 1
let y = 2
let z = 3
console.log( {x, y, z} )
Uscita console
Uscita console

Puoi fare la stessa cosa con un oggetto.

let user = {
  name: 'Jesse',
  contact: {
    email: 'codestackr@gmail.com'
  }
}
console.log(user)
console.log({user})

Il primo log stamperà le proprietà all'interno dell'oggetto user. Il secondo identificherà l'oggetto come "user" e ne stamperà le proprietà.

Se stai visualizzando molte cose sulla console, questo può aiutarti a identificare ogni log.

Variabili all'interno del log

Sapevi che puoi utilizzare porzioni del tuo log come variabili?

console.log("%s is %d years old.", "John", 29)

In questo esempio, %s fa riferimento al parametro stringa presente dopo il valore iniziale. Questo si riferirebbe a "John".

E %d si riferisce al parametro numerico presente dopo il valore iniziale. Questo si riferirebbe a 29.

L'output di questo codice sarà: "John is 29 years old.".

Varianti di log

Ci sono alcune varianti di log. Il più usato è console.log(). Ma ci sono anche:

console.log('Console Log')
console.info('Console Info')
console.debug('Console Debug')
console.warn('Console Warn')
console.error('Console Error')

Queste varianti aggiungono stile ai nostri log nella console. Ad esempio, warn sarà colorato di giallo e error sarà colorato di rosso.

Nota: gli stili variano da browser a browser.

Log opzionali

Possiamo stampare i messaggi sulla console in modo condizionale con console.assert().

let isItWorking = false
console.assert(isItWorking, "this is the reason why")

Se il primo argomento è false, il messaggio verrà stampato.

Se dovessimo cambiare isItWorking in true, il messaggio non verrà visualizzato.

Conteggio

Sapevi che puoi contare con la console?

for(i=0; i<10; i++){
  console.count()
}

Ogni iterazione di questo ciclo stamperà un conteggio sulla console. Vedrai "default: 1, default: 2" e così via fino a raggiungere 10.

Se esegui di nuovo lo stesso ciclo, vedrai che il conteggio riprende da dove era stato interrotto; 11 - 20.

Per azzerare il contatore possiamo usare console.countReset().

E, se vuoi assegnare al contatore un nome diverso da "default", puoi farlo!

for(i=0; i<10; i++){
  console.count('Counter 1')
}
console.countReset('Counter 1')

Ora che abbiamo aggiunto un'etichetta, vedrai "Counter 1, Counter 2" e così via.

E per azzerare questo contatore, dobbiamo passare il nome in countReset. In questo modo puoi avere più contatori in funzione contemporaneamente e azzerare solo quelli specifici.

Traccia il tempo

Oltre a contare, puoi anche cronometrare qualcosa come un cronometro.

Per avviare un timer possiamo usare console.time(). Questo non farà nulla da solo. Quindi, in questo esempio, useremo setTimeout()per emulare il codice in esecuzione. Quindi, entro il timeout, fermeremo il nostro timer utilizzando console.timeEnd().

console.time()
setTimeout(() => {
  console.timeEnd()
}, 5000)

Come ti aspetteresti, dopo 5 secondi avremo un log di fine timer di 5 secondi.

Possiamo anche registrare l'ora corrente del nostro timer mentre è in esecuzione, senza fermarlo. Lo facciamo usando console.timeLog().

console.time()

setTimeout(() => {
  console.timeEnd()
}, 5000)

setTimeout(() => {
  console.timeLog()
}, 2000)

In questo esempio, otterremo prima il timeLog ai 2 secondi, quindi il timeEnd ai 5 secondi.

Proprio come il contatore, possiamo etichettare i timer e averne più in esecuzione contemporaneamente.

Gruppi

Un'altra cosa con cui puoi fare con i log è raggrupparli.

Iniziamo un gruppo usando console.group(). E chiudiamo un gruppo con console.groupEnd().

console.log('I am not in a group')

console.group()
console.log('I am in a group')
console.log('I am also in a group')
console.groupEnd()

console.log('I am not in a group')

Questo gruppo di log sarà collassabile. Ciò semplifica l'identificazione di insiemi di log.

Per impostazione predefinita, il gruppo non è compresso. Puoi impostarlo su compresso usando console.groupCollapsed() al posto di console.group().

Le etichette possono anche essere passate all'interno di group() per identificarle meglio.

Traccia dello Stack

Puoi anche eseguire la traccia di uno stack con console. Basta aggiungerlo in una funzione.

function one() {
  two()
}
function two() {
  three()
}
function three() {
  console.trace()
}
one()

In questo esempio, abbiamo funzioni molto semplici che si chiamano a vicenda. Quindi, nell'ultima funzione, chiamiamo console.trace().

Uscita console
Uscita console

Tabelle

Ecco uno degli usi più strabilianti della console: console.table().

Qui impostiamo alcuni dati da stampare:

let devices = [
  {
    name: 'iPhone',
    brand: 'Apple'
  },
  {
    name: 'Galaxy',
    brand: 'Samsung'
  }
]

Ora stamperemo questi dati usando console.table(devices).

Uscita console
Uscita console

Ma aspetta: possiamo fare di più!

Se vogliamo solo i marchi, basta console.table(devices, ['brand'])!

Uscita console
Uscita console

Che ne dici di un esempio più complesso? In questo esempio useremo jsonplaceholder.

async function getUsers() {
  let response = await fetch('https://jsonplaceholder.typicode.com/users')
  let data = await response.json()
 
  console.table(data, ['name', 'email'])
}

getUsers()

Qui stiamo solo stampando il "name" e la "email". Se stampi tutti i dati con console.log, vedrai che ci sono molte più proprietà per ogni utente.

Stile

Sapevi che puoi utilizzare le proprietà CSS per definire lo stile dei tuoi log?

Per fare ciò, utilizziamo %c per specificare che abbiamo degli stili da aggiungere. Gli stili vengono passati al secondo argomento di log.

console.log("%c This is yellow text on a blue background.", "color:yellow; background-color:blue")

Puoi usarlo per far risaltare i tuoi log.

Clear

Se stai cercando di risolvere un problema utilizzando i log, potresti avere la necessità aggiornare molto spesso se la tua console e affollata.

Basta aggiungere console.clear() all'inizio del tuo codice e avrai una console pulita ogni volta che aggiorni.

Basta non aggiungerlo in fondo al codice, lol.

Grazie per aver letto!

Se vuoi rivisitare i concetti in questo articolo tramite video, puoi dare un'occhiata a questa versione video che ho realizzato qui .

YouTube: c'è di più da console che log
Jesse Hall (codeSTACKr)

Sono Jesse dal Texas. Dai un'occhiata agli altri miei contenuti e fammi sapere come posso aiutarti nel tuo viaggio per diventare uno sviluppatore web.