</> Praktum

Главная / JavaScript / console в JavaScript

Справочник · JavaScript

console: вывод и отладка в браузере

Редакция PraktumОбновлено 5 мин чтенияУровень: новичок

Объект console выводит сообщения в консоль инструментов разработчика (F12 → Console). console.log — для любых значений, warn и error — для предупреждений и ошибок, table показывает массив объектов таблицей, а time замеряет, сколько выполняется код. Это главный инструмент отладки, когда нужно быстро посмотреть, что лежит в переменной.

Коротко
  • console.log(x) — вывести значение.
  • console.table(arr) — массив объектов таблицей.
  • console.error — ошибка со стеком вызовов.
  • console.time / timeEnd — замер времени.
  • Логи с данными пользователей не оставляют в продакшене.

Минимальный пример

const user = { name: 'Аня', age: 25 };

console.log('Пользователь:', user);
console.log({ user });             // имя переменной видно в выводе
console.warn('Пароль слишком короткий');
console.error('Не удалось загрузить данные');

log принимает несколько аргументов через запятую. Запись console.log({ user }) — удобный приём: объект с одним свойством показывает и имя переменной, и значение.

Методы console

Полезные методы
МетодДля чего
log, info, debugобычные сообщения
warnпредупреждение, жёлтым
errorошибка, красным, со стеком
tableмассив или объект таблицей
group, groupCollapsed, groupEndсворачиваемые группы
time, timeEnd, timeLogзамер времени
count, countResetсколько раз вызывалось место
assertсообщение, только если условие ложно
traceстек вызовов: откуда пришли сюда
dirобъект как дерево свойств (полезно для DOM-элементов)

console.table для данных

const products = [
  { id: 1, name: 'Кроссовки', price: 5990 },
  { id: 2, name: 'Носки', price: 390 },
];
console.table(products);
console.table(products, ['name', 'price']);   // только нужные колонки

Массив объектов из ответа сервера читать в log неудобно. table показывает его таблицей с сортировкой по колонкам — сразу видно пропуски и странные значения.

Замер времени

console.time('сортировка');
const sorted = bigArray.toSorted((a, b) => a.price - b.price);
console.timeEnd('сортировка');   // сортировка: 12.4 ms

time и timeEnd с одинаковой меткой показывают, сколько миллисекунд выполнялся код между ними. Для точных измерений используют performance.now() или вкладку Performance в DevTools.

Группы и assert

console.groupCollapsed('Ответ сервера');
console.log('Статус:', res.status);
console.log('Данные:', data);
console.groupEnd();

console.assert(Array.isArray(data.items), 'items должен быть массивом', data);

Группы сворачивают связанные сообщения, чтобы консоль не превращалась в простыню. assert ничего не выводит, пока условие истинно, и пишет ошибку, когда нарушено ожидание.

Ловушка: объекты «живые»

const cart = { items: [] };
console.log(cart);          // при раскрытии покажет уже изменённый объект
cart.items.push('Носки');

console.log(structuredClone(cart));   // снимок на момент вывода
console.log(JSON.stringify(cart));

Консоль хранит ссылку на объект и показывает его содержимое в момент раскрытия, а не в момент вывода. Если объект потом изменился, увидишь новое состояние. Для снимка выводи копию или строку JSON.

Логи в продакшене

Консоль видит любой посетитель, открывший DevTools. Не выводи токены, пароли, персональные данные и полные ответы сервера. Отладочные log перед публикацией удаляют; сборщики умеют вырезать их автоматически. Для ошибок на реальном сайте используют системы мониторинга, а console.error оставляют только для действительно неожиданных ситуаций.

console.log или отладчик

console.log

Быстро посмотреть значение, проследить порядок вызовов.

debugger и точки останова

Пошагово пройти код, посмотреть все переменные в момент остановки.

Частые ошибки

  • Оставляют отладочные логи с данными пользователей на сайте.
  • Доверяют выводу изменяемого объекта, раскрытому позже.
  • Выводят массивы объектов через log вместо table.
  • Ищут ошибку только логами, не используя точки останова.
  • Пишут console.log в горячем цикле и тормозят страницу.

Доступность

Консоль не видят пользователи, поэтому ошибки, важные для человека, показывай на странице понятным текстом. console.error — для разработчика, сообщение в интерфейсе — для пользователя.

Поддержка браузерами

console.log, warn, error, table, group, time и count работают во всех актуальных браузерах и в Node.js.

Практика

Загрузи список пользователей с /api/users. Замерь время запроса, выведи результат таблицей с колонками name и email внутри свёрнутой группы «Пользователи» и проверь через assert, что пришёл массив.

Показать решение
console.time('запрос пользователей');
const res = await fetch('/api/users');
const users = await res.json();
console.timeEnd('запрос пользователей');

console.assert(Array.isArray(users), 'Ожидали массив', users);
console.groupCollapsed('Пользователи');
console.table(users, ['name', 'email']);
console.groupEnd();

Открыть песочницу

Частые вопросы

Как открыть консоль в браузере?

F12 или Ctrl+Shift+J (Cmd+Option+J на Mac), вкладка Console.

Как вывести массив объектов таблицей?

console.table(arr).

Как замерить время выполнения кода?

console.time('метка') и console.timeEnd('метка').

Почему в консоли объект уже изменён?

Консоль показывает объект в момент раскрытия. Выводи копию: structuredClone или JSON.stringify.

Нужно ли удалять console.log перед публикацией?

Да, особенно с данными пользователей.

Источники

Ещё в разделе JavaScript