консоль
Базовая реализация Широко доступна
Эта функция хорошо отработана и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.
Примечание: Эта функция доступна в Потоках Web Workers.
Объект console предоставляет доступ к консоли отладки (например, к консоли браузера в Firefox).
Реализации API консоли могут отличаться в разных средах выполнения. В частности, некоторые методы консоли могут работать по-другому или вообще не работать в некоторых онлайн-редакторах и IDE. Чтобы увидеть поведение, описанное в этой документации, попробуйте методы в средствах разработчика вашего браузера, хотя даже здесь есть различия между браузерами.
К объекту console можно получить доступ из любого глобального объекта. Window в средах браузера и WorkerGlobalScope как специфические варианты в потоках через свойство console. Он экспортируется как Window.console, и может быть использован как console. Например:
console.log("Failed to open the specified link");
Методы экземпляра
console.assert()-
Вывести сообщение об ошибке в консоль, если первый аргумент
false. console.clear()-
Очистить консоль.
console.count()-
Вывести количество вызовов этой строки с заданным меткой.
console.countReset()-
Сбросить значение счетчика с заданной меткой.
console.debug()-
Вывести сообщение в консоль с уровнем отладки.
console.dir()-
Отобразить интерактивный список свойств указанного JavaScript-объекта. Этот список позволяет использовать раскрывающие треугольники для просмотра содержимого дочерних объектов.
console.dirxml()-
Отобразить представление элемента XML/HTML указанного объекта, если это возможно, или представление JavaScript-объекта, если нет.
console.error()-
Вывести сообщение в консоль с уровнем ошибки.
console.exception()Нестандартный Устаревший-
Псевдоним для
console.error(). console.group()-
Создать новую инлайновую группу, отступы всего последующего вывода на уровень глубже. Чтобы вернуться на уровень выше, вызовите
console.groupEnd(). console.groupCollapsed()-
Создать новую инлайновую группу, отступы всего последующего вывода на уровень глубже. Однако, в отличие от
console.group(), она начинает с инлайновой группы, скрытой, что требует использования кнопки раскрытия для ее развёртывания. Чтобы вернуться на уровень выше, вызовитеconsole.groupEnd(). console.groupEnd()-
Выход из текущей инлайновой группы.
console.info()-
Вывести сообщение в консоль с уровнем информации.
console.log()-
Вывести сообщение в консоль.
-
console.profile()Нестандартный -
Запустить встроенный профайлер браузера (например, инструмент производительности Firefox). Вы можете указать необязательное имя для профиля.
-
console.profileEnd()Нестандартный -
Остановить профайлер. Результат профилирования можно увидеть в инструменте производительности браузера (например, инструмент производительности Firefox).
console.table()-
Отобразить табличные данные в виде таблицы.
console.time()-
Запустить таймер с именем, указанным в качестве входного параметра. На одной странице может работать до 10 000 одновременных таймеров.
console.timeEnd()-
Остановить указанный таймер и вывести в консоль время, прошедшее в миллисекундах с момента его запуска.
console.timeLog()-
Записать значение указанного таймера в консоль.
-
console.timeStamp()Нестандартный -
Добавляет маркер на временную шкалу инструмента производительности браузера (Chrome или Firefox).
console.trace()-
Вывести стек вызовов.
console.warn()-
Вывести сообщение в консоль с уровнем предупреждения.
Примеры
Вывод текста в консоль
Наиболее часто используемой функцией консоли является регистрация текста и других данных. Существуют несколько категорий вывода, которые можно сгенерировать с помощью методов console.log(), console.info(), console.warn(), console.error() или console.debug(). Каждый из этих методов приводит к выводу, стилизованному по-разному в журнале, и вы можете использовать средства фильтрации, предоставляемые вашим браузером, для просмотра только тех видов вывода, которые вас интересуют.
Существует два способа использования каждого из методов вывода:
- Передайте переменное количество аргументов, строковые представления которых будут конкатенированы в одну строку, а затем выведены в консоль.
- Передайте строку, содержащую ноль или более строк подстановки, за которыми следует переменное количество аргументов для их замены.
Вывод одного объекта
Самый простой способ использования методов регистрации — это вывод одного объекта:
const someObject = { str: "Some text", id: 5 };
console.log(someObject);
Вывод выглядит примерно так:
{str:"Some text", id:5}
Браузер отобразит как можно больше информации об объекте. Например, может быть отображено и приватное состояние объекта. Некоторые типы объектов, такие как элементы DOM или функции, также могут быть отображены особым образом.
Создание снимков объектов
Информация об объекте извлекается лениво. Это означает, что сообщение журнала отображает содержимое объекта в момент первого просмотра, а не в момент его регистрации. Например:
const obj = {};
console.log(obj);
obj.prop = 123;
Это выведет {}. Однако, если вы развернете детали объекта, вы увидите prop: 123.
Если вы собираетесь изменить свой объект и хотите предотвратить обновление зарегистрированной информации, вы можете выполнить глубокое клонирование объекта перед его регистрацией. Распространённый способ — JSON.stringify() и затем JSON.parse() его:
console.log(JSON.parse(JSON.stringify(obj)));
Существуют и другие альтернативы, работающие в браузерах, такие как structuredClone(), которые более эффективны при клонировании различных типов объектов.
Вывод нескольких объектов
Вы также можете вывести несколько объектов, перечислив их при вызове метода регистрации, например так:
const car = "Dodge Charger";
const someObject = { str: "Some text", id: 5 };
console.info("My first car was a", car, ". The object is:", someObject);
Вывод будет выглядеть так:
My first car was a Dodge Charger . The object is: {str:"Some text", id:5}
Использование подстановок строк
Первый параметр методов регистрации может быть строкой, содержащей ноль или более строк подстановки. Каждая строка подстановки заменяется соответствующим значением аргумента.
%o-
Выводит JavaScript-объект в стиле «оптимально полезного форматирования», например, элементы DOM могут быть отображены так же, как они отображаются в инспекторе элементов.
%O-
Выводит JavaScript-объект в стиле «общего форматирования JavaScript-объектов», обычно в виде раскрываемого дерева. Это похоже на
console.dir(). %dили%i-
Выводит целое число.
%s-
Выводит строку.
%f-
Выводит значение с плавающей точкой.
%c-
Применяет правила стилей CSS ко всему последующему тексту. См. Стиль вывода в консоли.
Некоторые браузеры могут реализовывать дополнительные спецификаторы формата. Например, Safari и Firefox поддерживают форматирование с точностью в стиле C %.<precision>f. Например, console.log("Foo %.2f", 1.1) выведет число с двумя десятичными знаками: Foo 1.10, а console.log("Foo %.2d", 1.1) выведет число как две значащие цифры с ведущим нулем: Foo 01.
Каждый из них извлекает следующий аргумент после строки формата из списка параметров. Например:
for (let i = 0; i < 5; i++) {
console.log("Hello, %s. You've called me %d times.", "Bob", i + 1);
}
Вывод выглядит так:
Hello, Bob. You've called me 1 times. Hello, Bob. You've called me 2 times. Hello, Bob. You've called me 3 times. Hello, Bob. You've called me 4 times. Hello, Bob. You've called me 5 times.
Стиль вывода в консоли
Вы можете использовать директиву %c для применения CSS-стиля к выводу в консоли:
console.log( "This is %cMy stylish message", "color: yellow; font-style: italic; background-color: blue;padding: 2px", );
Текст перед директивой не будет затронут, но текст после директивы будет стилизован с использованием CSS-деклараций в параметре.
Вы можете использовать %c несколько раз:
console.log( "Multiple styles: %cred %corange", "color: red", "color: orange", "Additional unformatted message", );
Допустимые свойства вместе с синтаксисом %c (по крайней мере, в Firefox — они могут отличаться в других браузерах):
-
backgroundи его эквиваленты с длинной записью -
borderи его эквиваленты с длинной записью border-radiusbox-decoration-breakbox-shadow-
clearиfloat colorcursordisplay-
fontи его эквиваленты с длинной записью line-heightmargin-
outlineи его эквиваленты с длинной записью padding-
text-*свойства, такие какtext-transform white-space-
word-spacingиword-break writing-mode
Примечание: каждое сообщение консоли по умолчанию ведет себя как инлайновый элемент. Если вы хотите, чтобы такие свойства, как padding, margin, и так далее, имели какой-либо эффект, вы можете установить свойство display в display: inline-block.
Примечание: для поддержки светлой и тёмной цветовых схем, при указании цветов можно использовать light-dark(); например: color: light-dark(#D00000, #FF4040);
Использование групп в консоли
Вы можете использовать вложенные группы для организации вывода, визуально объединяя связанные материалы. Для создания нового вложенного блока вызовите console.group(). Метод console.groupCollapsed() аналогичен, но создаёт новый блок свёрнутым, требуя использования кнопки раскрытия для его просмотра.
Для выхода из текущей группы вызовите console.groupEnd(). Например, при таком коде:
console.log("This is the outer level");
console.group("First group");
console.log("In the first group");
console.group("Second group");
console.log("In the second group");
console.warn("Still in the second group");
console.groupEnd();
console.log("Back to the first group");
console.groupEnd();
console.debug("Back to the outer level");
Вывод будет выглядеть так:
Таймеры
Вы можете запустить таймер для расчёта длительности определённой операции. Для запуска вызовите метод console.time(), передав ему имя в качестве единственного параметра. Для остановки таймера и получения затраченного времени в миллисекундах, вызовите метод console.timeEnd(), снова передав имя таймера в качестве параметра. Одновременно на странице может работать до 10 000 таймеров.
Например, при таком коде:
console.time("answer time");
alert("Click to continue");
console.timeLog("answer time");
alert("Do a bunch of other stuff…");
console.timeEnd("answer time");
Будет выведено время, необходимое пользователю для закрытия всплывающего окна, время будет выведено в консоли, будет ожидаться закрытие второго всплывающего окна, а затем будет выведено конечное время в консоли:
Обратите внимание, что имя таймера отображается как при запуске, так и при остановке таймера.
Стек-трейсы
Объект консоли также поддерживает вывод стека вызовов; это покажет вам путь вызовов, который был пройден для достижения момента вызова console.trace(). При таком коде:
function foo() {
function bar() {
console.trace();
}
bar();
}
foo();
Вывод в консоли будет выглядеть примерно так:
Спецификации
| Спецификация |
|---|
| Консоль # console-namespace |
Совместимость с браузерами
| Настольный | Мобильный | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | |
console |
1 | 12 | 4 | 10.5 | 3 | 18 | 4 | 11 | 1 | 1.0 | ≤37 |
assert_static |
2 | 12 | 28 | 11 | 4 | 18 | 28 | 11 | 3.2 | 1.0 | ≤37 |
clear_static |
25 | 12 | 39 | 12 | 7 | 25 | 39 | 12 | 7 | 1.5 | 4.4 |
countReset_static |
68 | 79 | 62 | 55 | 13 | 68 | 62 | 48 | 13 | 10.0 | 68 |
count_static |
2 | 12 | 30 | 11 | 4 | 18 | 30 | 11 | 3.2 | 1.0 | ≤37 |
debug_static |
2 | 12 | 5 | 11 | 4 | 18 | 5 | 11 | 3.2 | 1.0 | ≤37 |
dir_static |
2 | 12 | 8 | 11 | 4 | 18 | 8 | 11 | 3.2 | 1.0 | ≤37 |
dirxml_static |
2 | 12 | 39 | 11 | 4 | 18 | 39 | 11 | 3.2 | 1.0 | ≤37 |
error_static |
1 | 12 | 4 | 10.5 | 3 | 18 | 4 | 11 | 1 | 1.0 | 4.4 |
exception_static |
Нет | 13–79 | 28 | Нет | Нет | Нет | 28 | Нет | Нет | Нет | Нет |
groupCollapsed_static |
6 | 12 | 9 | 11 | 5.1 | 18 | 9 | 11 | 5 | 1.0 | 3 |
groupEnd_static |
2 | 12 | 9 | 11 | 4 | 18 | 9 | 11 | 3.2 | 1.0 | 37 |
group_static |
2 | 12 | 9 | 11 | 4 | 18 | 9 | 11 | 3.2 | 1.0 | 37 |
info_static |
1 | 12 | 4 | 10.5 | 3 | 18 | 4 | 11 | 1 | 1.0 | 4.4 |
log_static |
1 | 12 | 4 | 10.5 | 3 | 18 | 4 | 11 | 1 | 1.0 | 4.4 |
profileEnd_static |
5 | 12 | 16–102 | 11 | 4 | 18 | 16–102 | 11 | 3.2 | 1.0 | ≤37 |
profile_static |
5 | 12 | 16–102 | 11 | 4 | 18 | 16–102 | 11 | 3.2 | 1.0 | ≤37 |
substitution_strings |
1In version 28, if a negative value is passed to %d, it will be rounded down to the closest negative integer, so -0.1 becomes -1. |
12["Before Edge 79,%c is not supported.", "Before Edge 79, %d outputs a 0 if the specified value isn't a number."] |
9 | 15 | 3 | 18In version 28, if a negative value is passed to %d, it will be rounded down to the closest negative integer, so -0.1 becomes -1. |
9 | 14 | 1 | 1.0In Samsung Internet 1.5, if a negative value is passed to %d, it will be rounded down to the closest negative integer, so -0.1 becomes -1. |
≤37In version 28, if a negative value is passed to %d, it will be rounded down to the closest negative integer, so -0.1 becomes -1. |
table_static |
27 | 13 | 34 | 11 | 7 | 27 | 34 | 11 | 7 | 1.5 | 4.4 |
timeEnd_static |
2 | 12 | 10 | 11 | 4 | 18 | 10 | 11 | 3.2 | 1.0 | ≤37 |
timeLog_static |
71 | 79 | 62 | 60 | 13 | 71 | 62 | 50 | 13 | 10.0 | 71 |
timeStamp_static |
15 | 12 | 39 | 15 | 6 | 18 | 39 | 14 | 6 | 1.0 | ≤37 |
time_static |
2 | 12 | 10 | 11 | 4 | 18 | 10 | 11 | 3.2 | 1.0 | ≤37 |
trace_static |
2 | 12 | 6 | 11 | 4 | 18 | 6 | 11 | 3.2 | 1.0 | ≤37 |
warn_static |
1 | 12 | 4 | 10.5 | 3 | 18 | 4 | 11 | 1 | 1.0 | 4.4 |
|---|---|---|---|---|---|---|---|---|---|---|---|
worker_support |
31 | 12 | 29 | ≤12.1 | 7 | 31 | 29 | ≤12.1 | 7 | 2.0 | 4.4.3 |
См. также
- Инструменты разработчика Firefox
- Консоль — как консоль в Firefox обрабатывает вызовы API консоли
- about:debugging — как отобразить вывод консоли, когда целевой объект отладки — мобильное устройство
- Инструменты разработчика Google Chrome
- Инструменты разработчика Microsoft Edge
- Инспектор веб-страниц Safari
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/console