console.log() – popularne „narzędzie” do debugowania aplikacji, z którego zapewne każdy korzystał (i zapewne nadal korzysta). Bardzo szybki i prosty sposób, aby podejrzeć wartość, sprawdzić w którego ifa „wchodzi” nasz algorytm lub wyświetlić komunikat w konsoli. Czy console może zaoferować nam coś więcej? Okazuje się, że tak…

Prześledźmy zatem kilka innych możliwości console. Wiedza ta przyda nam się wtedy, kiedy z jakiegoś powodu nie chcemy używać breakpointów, chcemy sprawdzić coś „na szybko” lub chcemy zweryfikować dosyć złożony algorytm i prześledzić sporą ilość danych. Wszystko zależy od osobistych preferencji i pomysłowości. 🙂

W artykule przedstawię kilka najważniejszych metod dostępnych w console, które mogą pomóc podczas codziennej pracy.

console – lista metod

console - lista metod
console – lista metod

Na początek spróbujmy wyświetlić podpowiedzi i metody, które posiada console. W tym celu uruchamiany konsolę. Dla Chrome i Firefoxa, powinien być to przycisk F12 lub Ctrl + Shift + J.
Wpisujemy console. (wraz z kropką). Na ekranie powinna pojawić się lista dostępnych metod.

Typy wiadomości – log(), info(), warn(), error()

Zamiast za każdym razem używać tylko console.log(), możemy użyć innych typów komunikatów w konsoli, aby rozróżnić nieco treści, z podziałem na normalny komunikat, błędy czy ostrzeżenia.

console.log('console log');
console.info('console info');
console.warn('console warn');
console.error('console error');
console - typy wiadomości
console – typy wiadomości
(kliknij, aby powiększyć)

Dodatkowo w przeglądarce Firefox, przy console.info() posiadamy ikonkę, która pomoże nam rozróżnić console.log() od console.info().

console.info() / console.log() - Firefox - ikona
console.info(), console.log() – Firefox

Grupowanie wiadomości – group()

Dzięki console.group('nazwa') można grupować wiadomości i wyświetlać je w bardzo przystępny, zagnieżdżony sposób.
W przykładzie celowo użyłem wcięć, aby łatwiej było widać, do której grupy należy dana wiadomość. Oczywiście wcięcia nie są w ogóle potrzebne.

console.group('Group 1 name');
  console.log('group 1 - a');
  console.log('group 1 - b');
    console.group('Group 1 sub');
      console.log('group 1 - c');
        console.group('Group 1 sub sub');
          console.log('group 1 - d');
        console.groupEnd();
   console.groupEnd();
console.groupEnd();

console.log('no group');

console.group();
  console.log('group 2');
console.groupEnd();
console - grupowanie komunikatów
console.group()
(kliknij, aby powiększyć)

Licznik – count()

Dzięki console możemy również bardzo szybko stworzyć licznik, który wyświetli ilość wywołań danego licznika. Nie musimy zatem deklarować własnej zmiennej i inkrementować jej, a następnie wyświetlać. To wszystko zapewnia nam console.count()

Zamiast własnych rozwiązań w stylu:

let counter = 0;

for (i = 0; i < 3; i++) {
  console.log(counter++);
}

możemy użyć:

Przykład 1:

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

Możemy również tworzyć wiele niezależnych liczników, podając nazwę jako parametr:

Przykład 2:

console.count("licznik 1");
console.count("licznik 2");

Każde wywołanie licznika z odpowiednią nazwą spowoduje wyświetlenie aktualnej wartości licznika do konsoli.

Przykład 3:

console.count(); // default: 1
console.count('first'); // first: 1
console.count(); // default: 2
console.count('first'); // first: 2
console.count('first'); // first: 3

Możemy również zresetować licznik używając console.countReset() lub console.countReset("nazwa")

Przykład 4:

console.count(); // 1
console.count(); // 2
console.countReset(); // resetujemy wartość licznika
console.count(); // 1

Stylowanie

console pozwala nam również na formatowanie wyświetlanego w konsoli tekstu. Dzięki użyciu %c, możemy jako drugi parametr przekazać do console.log() styl, który ma być nałożony na tekst.

console.log('%c tekst', 'color: red');
console.log('%c tekst', 'color: white, background-color: green');
console.log('%c tekst', 'font-size: 20px');
console.log('Tekst domyślny %c tekst kolor', 'color: blue');
console - stylowanie komunikatów
console – stylowanie komunikatów
(kliknij, aby powiększyć)

Tabela – table()

Inną, bardzo ciekawą opcją na podgląd zawartości jest console.table()

Przykład 1:

console.table(["one", "two", "three"]);
console.table()
console.table()

Przykład 2:

function Page(name, host) {
  this.name = name;
  this.host = host;
}

let page = new Page("magicweb.pl", "https://www.magicweb.pl");
console.table(page);
console.table()
console.table()

Czas, timer – time()

Dzięki console.time() możemy sprawdzić czas, jaki zajmuje dana operacja.

console.time("timer name");
for (i = 0; i < 1000000000; i++) {
  if (i === 10000) {
    console.timeLog("timer name");
  }
}
console.timeEnd("timer name");

Wynik:

timer name: 1.037109375ms
timer name: 3138.536865234375ms

Asercja – assert

Asercja również pomoże nam w debugowaniu aplikacji. Piszemy swój warunek i w sytuacji, kiedy nie zostanie on spełniony, w konsoli otrzymamy błąd. Jeżeli warunek jest spełniony, żaden komunikat się nie wyświetli. Dobra alternatywa dla dodatkowych „ifów”.

Przykład 1:

console.assert(1 === 1, 'OK');
console.assert(1 !== 1, 'Error');
console.assert()
console.assert()

Możemy również używać dynamicznych danych, czyli wyświetlić asercję w jakiejś części algorytmu używając wartości przypisanych do zmiennych/stałych itd.

Przykład 2:

let compareValue = 3;

console.assert(2 === compareValue, 'not the same');
console.assert() - zmienna
console.assert() – zmienna
(kliknij, aby powiększyć)

Ciekawe będzie użycie asercji w bardziej złożonych fragmentach kodu i wyświetlenie wartości, które używane są w algorytmie.

function test(param1, param2) {
  // advanced algorithm 
  console.assert(
    param1 === true, 
    {
      inputParam1: param1, 
      inputParam2: param2, 
      anotherValue: 'three'
    }
  );
}

test(false, 'two');

Przykład 3:

console.assert() - algorytm, podgląd wartości
console.assert() – algorytm, podgląd wartości
(kliknij, aby powiększyć)

Dzięki temu możemy prześledzić na jakim etapie algorytmu otrzymaliśmy niepoprawny rezultat i jakie wartości były wtedy używane.

Mam nadzieję, że po przeczytaniu artykułu będziecie do niego wracać i wykorzystywać opisane komendy na co dzień. Przy użyciu kilku z nich można osiągnąć ciekawe efekty i lepiej odnaleźć się w konsoli, gdy dotychczas używaliśmy głównie console.log().

Dzięki za Twój czas i dotrwanie do końca 🙂