Семь методов JavaScript, о которых незаслуженно мало говорят

Семь методов JavaScript, о которых незаслуженно мало говорят

В JavaScript есть методы, которые редко используются разработчиками уровней миддл и джуниор, но сильно упрощают разработку. Разработчик Elbrus Bootcamp Олег Смирнов рассказывает о семи методах console, которые можно использовать в чистом — или ванильном — JavaScript и в Node.js.

Ванильный JavaScript

Метод console.time()

Используется для подсчета времени, за которое выполняется операция. По сути, это таймер, который позволяет отложить выполнение функции на какое-то время. Представьте, что вам нужно показать всплывающее сообщение через минуту после того, как пользователь зашел на сайт. Эту минуту отсчитывает таймер, запуская функцию в строго определенный момент. А метод помогает его запустить.

console.time() в качестве аргумента принимает уникальное имя таймера.  Остановить метод можно с помощью console.timeEnd(), а зафиксировать промежуточное значение — с помощью console.timeLog(). Метод позволяет запустить до 10 тыс. таймеров одновременно.

Метод console.count()

Действует как счетчик и выводит в консоль количество вызовов метода с определенной меткой. В качестве аргумента он принимает имя этого метода.

Счетчиков можно сделать сколько угодно. Если говорить о практическом применении, то метод, например, позволяют следить за тем, где хранятся временные переменные.

for (let i = 0 ; i<4; i++){
    console.count("counter1");
}
for (let i = 0 ; i<4; i++){
    console.count("counter2");
}

Вывод будет выглядеть следующим образом:

counter1: 1

counter1: 2

counter1: 3

counter1: 4

counter2: 1

counter2: 2

counter2: 3

counter2: 4

Метод console.group()

Метод, как следует из названия, используется для группировки сообщений в консоли. Каждое следующее сообщение сдвигается вправо и таким образом визуально отделяется от другого.

Код ниже выведет такой результат:

console.log("This is the outer level");

console.group();

console.log("Level 2");

console.group();

console.log("Level 3");

console.warn("More of level 3");

console.groupEnd();

console.log("Back to level 2");

console.groupEnd();

console.log("Back to the outer level");

Отменить группировку со сдвигом можно методом console.groupEnd().

Метод console.table()

Если обычный console.log() выводит данные в виде таблицы, скрывая большую часть из них, то console.table() представляет их в виде наглядной таблицы.

Метод принимает в качестве аргумента массивы, массивы в массивах, массивы объектов и другие типы данных.

Важно отметить, что этот метод не используется в продакшн-среде: он не является стандартом и будет работать не во всех браузерах.

Node.js

Модуль cluster в Node.js

Позволяет использовать один и тот же серверный порт для нескольких дочерних процессов. Работает это следующим образом: основной процесс прослушивает порт и передает запросы дочерним процессам, распределенным по разным ядрам процессора.

На практике модуль используется для управления приложениями, которые работают с сетью. Но он подходит и для других приложений, которым нужно работать на нескольких ядрах процессора.

Модуль isolated-vm в Node.js

Позволяет запускать код полностью изолированно от основной логики и дает полный контроль над памятью и временем выполнения. Это многопоточный модуль с хорошей поддержкой (его используют несколько крупных проектов), который может быть полезен для безопасного запуска кода, которому программист не доверяет.

Модуль inspector в Node.js

Инструмент — профайлер, который доступен в Chrome DevTools во вкладке Performance. Его главная задача — собирать информацию о том, как выполнялся код. Например, сколько времени заняло выполнение каждой функции, как выделялась и освобождалась память и так далее.

Заключение

Этот список методов и модулей — не исчерпывающий. О других возможностях консоли в JavaScript и инструментах Node.js можно почитать в блоге Mozilla и в официальной документации к Node.js соответственно.