Perché console.log () è considerato migliore di alert ()?

Mi è sempre stato detto che durante il debug di un’applicazione, il metodo console.log() di JavaScript è preferibile semplicemente usando un metodo alert() . Perchè è questo? C’è un buon esempio, qualcuno può indicarmi dove console.log() è ovviamente la scelta migliore?

  • alert() sta bloccando
  • alert() non può essere facilmente soppresso in ambiente non di debug
  • console genere la console formatta i tuoi oggetti in modo piacevole e ti permette di attraversarli
  • le dichiarazioni di registrazione hanno spesso un puntatore interattivo per il codice che ha emesso la dichiarazione di registrazione
  • non puoi guardare più di un alert() alla volta
  • console possono avere diversi livelli di registrazione con una formattazione intuitiva

Prova questo:

 var data = {a: 'foo', b: 'bar'}; console.log(data); alert(data); 

Vedrai che console.log ti mostra l’object, mentre l’ alert ti dà [object Object] , che non è utile. Questo vale anche per, ad esempio:

 alert(document.body); // [object HTMLBodyElement] (exact result depends on your browser) 

Entrambi sono solo un modo per ottenere informazioni su ciò che sta accadendo in quel momento nel tuo JS. Ho usato sempre alert (), ma sono migrato su console.log () per alcuni motivi. (Nota a margine: la console offre molto più del semplice log (), date un’occhiata a cos’altro può fare).

Penso che i principali vantaggi di console.log () siano:

  • non ferma i processi come fa l’avviso
  • puoi vedere quale linea di quale script ha lanciato la voce del log senza inserire la linea nel tuo messaggio
  • se hai più di una cosa che stai eseguendo il debug, puoi diventare davvero noioso continuare a premere “ok” sulle tue caselle di avviso
  • puoi registrare oggetti e ottenere molte buone informazioni (grazie per il promemoria, altri risponditori)

Alla fine si riduce a come preferisci eseguire il debug.

Una cosa di cui essere a conoscenza. Non tutti i browser supportano console.log () e avranno un problema se si lasciano le chiamate console.log () nel codice. Fornire uno stub della console se la console non è disponibile per risolvere il problema.

È non-bloccante e ti permette di esaminare in profondità gli oggetti (piuttosto che vedere solo i risultati di toString() ).

L’ alert deve essere eliminato prima che l’esecuzione di javascript possa riprendere. console.log non ha questo problema.

console.log mostrerà anche l’object con i valori, in cui una chiamata alert richiederà di attraversare prima l’object.

Se si dimentica di rimuovere un’istruzione di avviso di debug, questo influirà direttamente sull’utente finale.
Se si dimentica di rimuovere un’istruzione console.log di debugging, l’utente non è interessato.
Inoltre console.log ti permetterà di vedere il contenuto completo di un object al posto della rappresentazione toString () di JavaScript.

Immagino che sia piuttosto una questione di gusti, ma ci sono una serie di vantaggi nell’usare console.log:

  • Diciamo che vuoi registrare 20 cose diverse, sarebbe abbastanza fastidioso con l’allerta.
  • È ansible registrare gli oggetti, ad esempio, e quindi ispezionarli.
  • Ad esempio, per gli strumenti di sviluppo di Chrome è ansible mantenere il registro tra pagine diverse.
  • È non-bloccante
  • Non ha alcun effetto sull’utente finale se dimenticato

Per dirne alcuni.

Poiché gli avvisi sono un PITA, interrompi tutto fino a quando non viene immesso e non consentire l’introspezione dell’object.

Usare un debugger è ancora meglio in alcune circostanze.

alert () interrompe tutte le interazioni con il browser fino a quando il messaggio non viene chiuso mentre console.log () stampa il messaggio sulla console.

Ex. Stai stampando i valori di un gruppo di variabili per assicurarti che abbiano ragione e non voglia chiudere la finestra di avviso dopo ogni variabile.