W3docs

JavaScript Console API

Console API — важный инструмент веб-разработчика для взаимодействия с консолью браузера, отладки, обработки ошибок и логирования в JavaScript.

Введение в Console API

Console API — это набор методов console.*, позволяющих вашему JavaScript взаимодействовать с консолью разработчика — панелью, которую вы открываете через DevTools браузера (Chrome, Firefox, Edge, Safari) или которую Node.js выводит в терминале. Это наиболее используемый инструмент отладки в JavaScript: одной строкой вы можете проверить значение, измерить время операции или напечатать трассировку стека, не изменяя поведение программы.

На этой странице рассматриваются методы, которые используются каждый день — log, info, warn, error, table, dir, group, time, count, assert и trace — а также спецификаторы формата (%s, %d, %c), управляющие отображением значений.

Консоль доступна глобально, поэтому вы можете вызывать эти методы из любого места — в браузерном скрипте, консоли DevTools или файле Node.js.

Базовое логирование с помощью console.log()

console.log() выводит информацию в консоль. Метод принимает любое количество аргументов любого типа и разделяет их пробелами — строки, числа, array и object форматируются автоматически.

javascript— editable

Вывод метки рядом со значением ('Value of y:', y) — самый простой и распространённый приём отладки: он сохраняет читаемость вывода, когда в консоль прокручивается несколько сообщений.

Уровни логирования: info, warn и error

console.info(), console.warn() и console.error() работают точно так же, как console.log(), но несут уровень серьёзности. Браузер стилизует каждый из них по-разному (предупреждения получают жёлтый фон, ошибки — красный), и, что важно, DevTools позволяет фильтровать по уровню, чтобы скрыть шум и показывать только ошибки при неправильной работе страницы.

javascript— editable

Используйте console.warn() для ситуаций, которые можно исправить, но которые заслуживают внимания (устаревший параметр, отсутствующее необязательное поле), и console.error() для реальных сбоев. Сочетайте console.error() с правильной обработкой ошибок через try...catch, чтобы сбои были и зафиксированы, и обработаны.

Форматирование вывода с помощью спецификаторов формата

Когда первый аргумент метода console содержит спецификатор формата, остальные аргументы подставляются на его место. Распространённые спецификаторы:

  • %s — string
  • %d (или %i) — целое число
  • %f — число с плавающей точкой
  • %o / %O — object
  • %c — применить CSS-стилизацию к выводу (только в браузере)
javascript— editable

В Node.js стилизация %c игнорируется, но текст всё равно выводится. Спецификаторы формата удобны, когда нужен чистый, читаемый вывод вместо значений, разделённых запятыми.

Отображение структурированных данных

Таблицы с помощью console.table()

console.table() отображает array объектов (или object объектов) в виде сортируемой таблицы — намного удобнее для просмотра, чем вложенный вывод console.log().

javascript— editable

Инспектирование объектов с помощью console.dir()

console.dir() выводит интерактивный, разворачиваемый список свойств объекта. Особенно полезен для DOM-узлов: console.log(element) показывает отрисованный HTML, тогда как console.dir(element) показывает элемент как JavaScript object со всеми его свойствами.

javascript— editable

Организация и подсчёт логов

Группировка с помощью console.group()

console.group() и console.groupEnd() делают отступы и (в браузере) сворачивают логи между ними — идеально для группировки связанного вывода во время сложной отладки.

javascript— editable

Используйте console.groupCollapsed() вместо console.group(), чтобы группа была свёрнута по умолчанию.

Подсчёт с помощью console.count()

console.count(label) выводит, сколько раз метод был вызван с этой меткой — быстрый способ узнать, как часто выполняется функция или срабатывает ветка кода, без необходимости вести счётчик вручную.

javascript— editable

Утверждения и трассировки стека

Утверждения с помощью console.assert()

console.assert(condition, message) выводит сообщение только тогда, когда условие ложно. Если условие истинно, вывод не производится, поэтому проверки работоспособности можно оставлять на месте, не засоряя консоль.

javascript— editable

Трассировки стека с помощью console.trace()

console.trace() выводит текущий стек вызовов — цепочку вызовов функций, приведшую к данной точке. Это самый быстрый способ ответить на вопрос «как выполнение оказалось здесь?»

javascript— editable

Измерение производительности

console.time(label) запускает таймер, а console.timeEnd(label) останавливает его и выводит прошедшее время в миллисекундах. Используйте одинаковую метку для обоих вызовов. Это лёгкая альтернатива performance.now() для выявления медленных операций.

javascript— editable

Что изучить дальше

Console API — лишь часть более широкого набора инструментов отладки. О точках останова, панели Sources и остальных возможностях DevTools читайте в разделе Отладка DOM и инструменты. И хотя вызовы console отлично подходят в процессе разработки, для объяснений, которые должны оставаться в коде постоянно, предпочтительнее использовать комментарии в коде — и не забывайте удалять случайные вызовы console.log перед релизом.

Заключение

Console API предоставляет быстрый, не требующий настройки способ понять, что делает ваш код: log/info/warn/error для сообщений с уровнями, table и dir для структурированных данных, group и count для организации вывода, time для измерения производительности, а assert/trace — для обнаружения и объяснения ошибок. В сочетании со спецификаторами формата эти методы покрывают подавляющее большинство повседневных задач отладки JavaScript.

Практика

Практика
Какие из следующих утверждений точно описывают возможности Console API в JavaScript?
Какие из следующих утверждений точно описывают возможности Console API в JavaScript?
Was this page helpful?