Всем привет. Сейчас задам весьма тривиальный вопрос: как работает вывод в консоль? Я вот использую nodejs как пример. Простой участок кода: console.log(1); console.log(2); console.error(3); console.log(4); А теперь внимание: Если запускать через терминал (в линуксе) node test.js выведет все по порядку: 1 2 3 4 Но если запускать в какой-ниб среде, которая умеет отличить ошибку от инфо. таких как шторм или ci. То будет все что угодно, 3 1 2 4, 1 3 2 4 или 1 2 4 3. По настроению цифра 3 будет в любом месте лога. А изначально, почему у меня этот вопрос возник, это ci: Ошибки смешиваются с логами. Как это работает? Ответ напрашивается такой: мол есть очередь сообщений, а ошибки лезут в не очереди. При условии что терминал может отличить ошибку от сообщения. А теперь я хочу пруфы. Почему так сделали? На самом деле все так обстоит? что оптимизировали? Почему не по порядку. Или все таки nodejs виноват?
Отслеживать
задан 3 сен 2016 в 11:54
Андрей Сорока Андрей Сорока
235 2 2 серебряных знака 9 9 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Эти два способа вывода пишут в разные потоки вывода.
console.log пишет в stdout (файловый дескриптор 1). console.error пишет в stderr (файловый дескриптор 2).
Если какой-то обработчик этих двух потоков задумает их выводить комбинированно (в ваших случаях именно так), то результат будет зависеть от способа комбинации. Это уже в зоне ответственности не Node.js, а процесса, который его запускает. Шелла, CI-раннера или чего-то ещё.
Можно точно рассчитывать, что порядок в пределах каждого отдельно взятого потока порядок выводимых строк сохранится. Для логов потоки и вовсе обычно выводят в отдельные файлы.
Выводим элемент в консоль
Мы сказали JavaScript найти на странице элемент с классом page , но как узнать, что он его действительно нашёл? И что элемент — тот самый? Для этого нам понадобится консоль.
Консоль — это инструмент разработчика, который помогает тестировать код. Если во время выполнения скрипта возникнет ошибка, в консоли появится сообщение о ней. А ещё в консоль можно выводить текстовые подсказки. В нашем интерфейсе консоль находится справа от редактора кода, между мини-браузером и списком задач. Чтобы увидеть сообщения в консоли, её нужно развернуть, щёлкнув по значку справа.
Задачи Выполнено 0 из 3
Чтобы вывести сообщение в консоль, нужно использовать console.log :
console.log('Привет от JavaScript!');
В результате этой инструкции в консоли появится сообщение Привет от JavaScript!
В консоль можно выводить не только текст, но и результаты выполнения инструкций. Например, найденный с помощью querySelector элемент:
console.log(document.querySelector('.page'));
Инструкция получилась длинной и сложной, но вскоре мы разберём, как её упростить. А пока займёмся тестированием кода. Так называется этап создания программы, когда мы проверяем, что всё работает, как надо. И это не менее важно, чем написание кода.
Давайте убедимся, что JavaScript нашёл нужный элемент, а заодно потренируемся работать с консолью.
Перейти к заданию
index.html Сплит-режим
style.css Сплит-режим
script.js Сплит-режим
FlashNews!
На главную
Новая библиотека для создания графиков
Теперь вы можете создать дашборд за считанные секунды.
Что там у роботов?
В робототехнике происходит много интересного, эта новость могла бы быть об этом, но нет.
!DOCTYPE>
Консоль JavaScript в вашем браузере
В процессе программирования на JavaScript появляется необходимость выводить значения переменных. К примеру, это можно делать функцией alert( ). Но если использовать её несколько раз, тогда придётся закрывать всплывающее окно, чтобы увидеть следующее. Это неудобно, поэтому на помощь приходит консоль, встроенная в браузер.
Как открыть JavaScript консоль в браузере?
Если вы пользуетесь одним из популярных браузеров (Chrome, FireFox, Safari, Opera), то в них уже встроена консоль JavaScript, в которую можно выводить отладочную информацию во время разработки. Для этого откройте страницу сайта, на которой находится JS код для тотладки, и кликните на клавишу F12 на клавиатуре. Откроется панель разработчика.
В большинстве браузеров средства разработки называются более-менее одинаково и имеют очень схожий функционал. Далее в статье будет рассматриваться браузер FireFox.
Теперь необходимо переключить вкладку вверху открывшегося окна на «Консоль». Кликните на эту вкладку с помощью курсора мыши: Разберёмся с иконоками и опциями, которые есть в этой закладке:
Иконка корзины — очищает лог (лог — это список событий, строчки текстовых записи)
Непрерывные логи — если поставить эту галочку, то при перезагрузки страницы лог не будет очищаться автоматически.
«Ошибки», «Предупреждения», «Лог» . — эти закладки отключают вывод сообщений. К примеру, кликните по пункту «Ошибки» и снимите выделение, тогда в консоль не будут записываться предупреждение об ошибках.
Как вывести переменную JavaScript в консоль?
Попробуем написать на странице JavaScript код и перезагрузить её, чтобы он выполнился. В коде используем функцию console.log( ), которая выводит значение содержимого в скобках. То есть если поставить в скобки переменную, то в консоли будет показано её значение:
var a = ; console.log(a);
Заглянем в консоль и увидим значение объекта: Чтобы увидеть подробную информацию, кликните на иконку стрелочки слева на интересующей строчке: Таким способом можно выводить не только массивы и объекты, но и простые переменные. К сожалению, если выводить сразу несколько значений, то не будет понятно что к чему относится. Продемонстрируем это:
var a = 'Мышь'; var b = 'Сыр'; var c = 100; console.log(a); console.log(b); console.log(c);
Результат выполнения этого кода будет таким: Такой вывод не слишком информативен. К счастью, внутри скобок функции console.log( ) можно использовать объединение строк. Поэтому предлагаем записать дополнительную отладочную информацию в выводимые строки:
var a = 'Мышь'; var b = 'Сыр'; var c = 100; console.log('Значение переменной "a" = ' + a); console.log('Значение переменной "b" = ' + b); console.log('Значение переменной "c" = ' + c);
Теперь вывод в консоль будет более информативным. И можно использовать функцию console.log( ) десятки раз, не боясь запутаться в значениях, которые попадают в консоль:
Рекомендуем ознакомиться со статьёй «Операции со строками в JavaScript», если возникли вопросы к объединению строк.
К сожалению, это можно делать только с простыми переменными (строки/числа) и массивами (в том числе многомерными), но с объектами так сделать не получится, потому что будет выведено «[object Object]» вместо значения:
Как вывести объект в консоль js
Чтобы вывести в консоль плоский объект (объект, в котором нет вложенных объектов или массивов), достаточно передать его в console.log() :
Для вложенных объектов с глубиной вложенности не более двух ситуация аналогичная: просто передаём такой объект в console.log() и всё будет работать как надо:
Здесь нам на помощь приходит метод JSON.stringify() , который преобразует объект в JSON строку. Работать этот способ будет с любым уровнем вложенности: