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
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');
Dodatkowo w przeglądarce Firefox, przy console.info()
posiadamy ikonkę, która pomoże nam rozróżnić console.log()
od console.info()
.
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();
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');
Tabela – table()
Inną, bardzo ciekawą opcją na podgląd zawartości jest console.table()
Przykład 1:
console.table(["one", "two", "three"]);
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);
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');
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');
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:
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 🙂