Что такое console.log?

415

Какая польза от console.log?

Пожалуйста, объясните, как использовать его в JavaScript, с примером кода.

Mihir
источник

Ответы:

455

Это не функция jQuery, а функция отладки. Например, вы можете записать что-то на консоль, когда что-то произойдет. Например:

$('#someButton').click(function() {
  console.log('#someButton was clicked');
  // do something
});

Затем вы увидите #someButton was clickedна вкладке «Консоль» Firebug (или консоли другого инструмента, например, Chrome's Web Inspector), когда нажмете кнопку.

По некоторым причинам консольный объект может быть недоступен. Затем вы можете проверить, если это так - это полезно, поскольку вам не нужно удалять код отладки при развертывании в рабочей среде:

if (window.console && window.console.log) {
  // console is available
}
Ян Ханчич
источник
17
Инструменты разработчика Google Chrome также имеют встроенную консоль.
Роберт Питт
8
«Это полезно, поскольку вам не нужно удалять код отладки при развертывании в рабочей среде» <- Что если конечный пользователь откроет Firebug?
AbdullahC
6
это также полезно для того, чтобы IE не выдавал ошибку из-за того, что консоль не была определена
Алан Уайтлоу
4
Имхо, лучше, чем проверять каждый раз, если console.log доступен, лучше иметь что-то вроде этого: if (typeof (console) == 'undefined') {console = {'log': function () {return}}} In В таком случае вы можете писать console.log каждый раз, когда вам нужно, не проверяя его наличие!
Энрико Карлессо
12
if (console.log)(или даже if (console && console.log)) все равно выдаст ошибку, если консоль недоступна. Вы должны использовать window.console(как windowэто гарантировано существует) и проверять только один уровень глубины за один раз.
Tgr
226

Места, которые вы можете посмотреть на консоли! Просто чтобы они все были в одном ответе.

Fire Fox

http://getfirebug.com/

(теперь вы также можете использовать встроенные в Firefox инструменты разработчика Ctrl + Shift + J (Инструменты> Веб-разработчик> Консоль ошибок), но Firebug намного лучше; используйте Firebug)

Safari и Chrome

В основном то же самое.

https://developers.google.com/chrome-developer-tools/docs/overview

https://developer.apple.com/technologies/safari/developer-tools.html

Internet Explorer

Не забывайте, что вы можете использовать режимы совместимости для отладки IE7 и IE8 в IE9 или IE10

http://msdn.microsoft.com/en-us/library/ie/gg589507(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/dd565628(v=vs.85).aspx

Если вам нужен доступ к консоли в IE6 для IE7, используйте букмарклет Firebug Lite

http://getfirebug.com/firebuglite/ ищите стабильный букмарклет

http://en.wikipedia.org/wiki/Bookmarklet

опера

http://www.opera.com/dragonfly/

IOS

Работает для всех iPhone, iPod Touch и iPad.

http://developer.apple.com/library/ios/ipad/#DOCUMENTATION/AppleApplications/Reference/SafariWebContent/DebuggingSafarioniPhoneContent/DebuggingSafarioniPhoneContent.html

Теперь с iOS 6 вы можете просматривать консоль через Safari в OS X, если подключите свое устройство. Или вы можете сделать это с помощью эмулятора, просто откройте окно браузера Safari и перейдите на вкладку «Разработка». Там вы найдете опции, чтобы заставить инспектора Safari связываться с вашим устройством.

Windows Phone, Android

Оба из них не имеют встроенной консоли и не имеют возможности закладки. Поэтому мы используем http://jsconsole.com/ type: listen, и он даст вам тег script для размещения в вашем HTML. С этого момента вы можете просматривать вашу консоль на веб-сайте jsconsole.

iOS и Android

Вы также можете использовать http://html.adobe.com/edge/inspect/ для доступа к инструментам веб-инспектора и консоли на любом устройстве, используя их удобный плагин для браузера.


Старые проблемы с браузером

Наконец, более старые версии IE будут аварийно завершать работу, если вы используете в своем коде console.log и при этом инструменты разработчика не будут открыты одновременно. К счастью, это легко исправить. Используйте приведенный ниже фрагмент кода вверху кода:

 if(!window.console){ window.console = {log: function(){} }; } 

Это проверяет, присутствует ли консоль, и если нет, устанавливает ее для объекта с пустой функцией, вызываемой log. Таким образом, window.console и window.console.log никогда не будут по-настоящемуundefined.

Fresheyeball
источник
26
Поправьте меня, если не прав, но я думаю, что Firebug не нужен в Firefox для просмотра консоли, просто нажмите Ctrl + Shift + J (Инструменты> Веб-разработчик> Консоль ошибок)
Dane411
4
@ Dane411 это правда, но firebug лучше и чаще используется.
Fresheyeball
3
@Fresheyeball Кто-то должен вычистить весь мусор, но я думаю, что в какой-то момент становится менее интересно собирать этих представителей и фактически поддерживать сообщество в чистоте.
andlrc
2
Кто бы ни отрицал этот ответ, пожалуйста, прокомментируйте. понижения без комментариев бесполезны
Fresheyeball
перед window.console.log был файл window.dump. Это лучше, чем пустая функция журнала
OCTAGRAM
100

Вы можете просматривать любые сообщения, зарегистрированные на консоли, если вы используете инструмент, такой как Firebug, для проверки вашего кода. Допустим, вы делаете это:

console.log('Testing console');

Когда вы получаете доступ к консоли в Firebug (или любом другом инструменте, который вы решите использовать для проверки своего кода), вы увидите любое сообщение, которое вы сказали функции, чтобы войти в систему. Это особенно полезно, когда вы хотите увидеть, выполняется ли функция или передается / назначается ли переменная правильно. На самом деле это довольно ценно для выяснения того, что пошло не так с вашим кодом.

Fibericon
источник
10
Не забудьте сначала определить его, чтобы избежать ошибок в IE: stackoverflow.com/a/7585409/318765
mgutt
83

Он отправит сообщение журнала на консоль javascript браузера, например, Firebug или Developer Tools (Chrome / Safari), и покажет строку и файл, из которого он был выполнен.

Более того, когда вы выводите объект jQuery, он будет включать ссылку на этот элемент в DOM, и при щелчке по нему вы перейдете на вкладку Elements / HTML.

Вы можете использовать различные методы, но имейте в виду, что для его работы в Firefox у вас должен быть открыт Firebug, иначе вся страница потерпит крах. Является ли то, что вы регистрируете, переменной, массивом, объектом или элементом DOM, это даст вам полную разбивку, включая и прототип для объекта (всегда интересно разобраться). Вы также можете включить столько аргументов, сколько захотите, и они будут заменены пробелами.

console.log(  myvar, "Logged!");
console.info( myvar, "Logged!");
console.warn( myvar, "Logged!");
console.debug(myvar, "Logged!");
console.error(myvar, "Logged!");

Они отображаются с разными логотипами для каждой команды.

Вы также можете использовать, console.profile(profileName);чтобы начать профилирование функции, скрипта и т. Д., А затем завершите его, console.profileEnd(profileName);и он появится на вкладке «Профили» в Chrome (не знаю с FF).

Для полной ссылки перейдите на http://getfirebug.com/logging, и я предлагаю вам прочитать его. (Следы, группы, профилирование, проверка объекта).

Надеюсь это поможет!

Фред
источник
1
Почему console.log("x:", x)лучше чем console.log("x:" + x)? Это меньше подвержено ошибкам, так как ,легче читать, чем +?
Кевин Мередит
На мой взгляд, это немного легче читать, когда вы выводите много разных вещей. В этом случае, вероятно, следует использовать +строго, но я хотел показать, что вы также можете использовать запятые в функциях консоли. Кроме того, это позволяет избежать проблем, если обе переменные являются целыми числами или массивами.
Фред
5
console.log("x:", x)значительно лучше, потому что когда xэто объект или массив (или что-то кроме строки), он отображается правильно, без преобразования в строку.
Йозеф Куфнер
34

Нет никакого отношения к jQuery, и если вы хотите использовать его, я советую вам сделать

if (window.console) {
    console.log("your message")
}

Таким образом, вы не нарушаете свой код, когда он недоступен.

Как предлагается в комментарии, вы также можете выполнить это в одном месте, а затем использовать console.logкак обычно

if (!window.console) { window.console = { log: function(){} }; }
Баптист Пернет
источник
18
Могу ли я рекомендовать вместо этого делать if(!window.console){ window.console = function(){}; }вместо этого в одном месте, а затем использовать console.log как обычно.
Fresheyeball
23

console.logне имеет ничего общего с jQuery. Это общий объект / метод, предоставляемый отладчиками (включая отладчик Chrome и Firebug), который позволяет сценарию регистрировать данные (или объекты в большинстве случаев) в консоли JavaScript.

Quentin
источник
19

console.logзаписывает отладочную информацию на консоль в некоторых браузерах (Firefox с установленным Firebug, Chrome, IE8, все с установленным Firebug Lite). В Firefox это очень мощный инструмент, позволяющий вам проверять объекты или проверять макет или другие свойства элементов HTML. Он не связан с jQuery, но есть две вещи, которые обычно делают при использовании его с jQuery:

  • установите расширение FireQuery для Firebug. Это, помимо других преимуществ, делает регистрацию объектов jQuery более привлекательной.

  • создайте оболочку, которая будет в большей степени соответствовать соглашениям о кодировании jQuery.

Это обычно означает что-то вроде этого:

$.fn.log = function() {
    if (window.console && console.log) {
        console.log(this);
    }
    return this;
}

который вы можете затем вызвать как

$('foo.bar').find(':baz').log().hide();

легко проверить внутри цепочек JQuery.

Tgr
источник
16

console.log не имеет ничего общего с jQuery.

Он записывает сообщение на консоль отладки, например Firebug.

SLaks
источник
16

Иногда путаница заключается в том, что для регистрации текстового сообщения вместе с содержимым одного из ваших объектов с помощью console.log вы должны передать каждый из двух в качестве отдельного аргумента. Это означает, что вы должны разделить их запятыми, потому что если бы вы использовали оператор + для объединения выходных данных, это неявно вызвало бы .toString()метод вашего объекта. В большинстве случаев это явно не переопределяется, и реализация по умолчанию, унаследованная, Objectне предоставляет никакой полезной информации.

Пример попробовать в консоли:

>>> var myObj = {foo: 'bar'}
undefined
>>> console.log('myObj is: ', myObj);
myObj is: Object { foo= "bar"}

тогда как, если вы попытаетесь объединить информативное текстовое сообщение с содержимым объекта, вы получите:

>>> console.log('myObj is: ' + myObj);
myObj is: [object Object]

Так что имейте в виду, что console.log на самом деле принимает столько аргументов, сколько вам нужно.

Талис К.
источник
13

Используйте console.logдля добавления отладочной информации на вашу страницу.

Многие люди используют alert(hasNinjas)для этой цели, но с ними console.log(hasNinjas)легче работать. При использовании предупреждения появляется модальное диалоговое окно, которое блокирует пользовательский интерфейс.

Редактировать: Я согласен с Баптистом Перне и Яном Ханчичем, что было бы очень неплохо проверить, window.consoleопределен ли сначала, чтобы ваш код не ломался , если нет доступной консоли.

Марк Байерс
источник
12

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

console.log("You made it to line 26. But then something went very, very wrong.")
Гаутам Кшатрия
источник
11

Вы используете его для отладки кода JavaScript с помощью Firebug для Firefox или консоли JavaScript в браузерах WebKit .

var variable;

console.log(variable);

Он будет отображать содержимое переменной, даже если это массив или объект.

Это похоже print_r($var);на PHP .

jondavidjohn
источник
3
Удобный наконечник ... Я всегда включают в себя следующее в глобально доступном файле JavaScript: if (!window.console) { window.console = { log : function() {} }; }. Это позволяет вам забыть удалить случайный оператор отладки.
roufamatic
@roufamatic Я не знаю ... добавление кода для обработки кода, который не принадлежит, кажется довольно ужасным решением ... особенно, когда найти / заменить так легко ...
jondavidjohn
10

Осторожно: если вы оставите вызовы консоли в вашем рабочем коде, ваш сайт будет поврежден в Internet Explorer. Никогда не держите его в развернутом виде. См .: https://web.archive.org/web/20150908041020/blog.patspam.com/2009/the-curse-of-consolelog

Харло Холмс
источник
2
Это не значит, что журнал консоли будет прерываться, если вы используете компьютер с Windows, но он сломает ваш сайт, если вы используете Internet Explorer.
Крис Холленбек
Я думаю, что блог, на который есть ссылка в ответе, больше не существует.
Цундоку
Оригинальная ссылка не работает. Я нашел копию веб-архива.
Алекс
8

В первые дни отладка JS выполнялась с помощью alert()функции - теперь это устаревшая практика.

Это console.log()функция, которая записывает сообщение для входа в консоль отладки, например, Webkit или Firebug. В браузере вы не увидите ничего на экране. Он записывает сообщение в консоль отладки. Он доступен только в Firefox с Firebug и в браузерах на основе Webkit (Chrome и Safari). Это не работает хорошо во всех выпусках IE .

Консольный объект является расширением DOM.

console.log()Следует использовать в коде только в процессе разработки и отладки.

Считается плохой практикой, что кто-то оставляет console.log()в файле javascript на рабочем сервере.

jjpcondor
источник
5

Если ваш браузер поддерживает отладку, вы можете использовать метод console.log () для отображения значений JavaScript.

Активируйте отладку в вашем браузере с помощью F12и выберите «Консоль» в меню отладчика.

Консоль в JavaScript. Попробуйте исправить или «отладить» неработающую программу JavaScript, и попробуйте использовать команду console.log (). Существуют ярлыки, которые помогут вам получить доступ к консоли JavaScript в зависимости от используемого вами браузера:

Сочетания клавиш Chrome Console

Windows: Ctrl+ Shift+ J
Mac: Cmd+ Option+J

Сочетания клавиш консоли Firefox

Windows: Ctrl+ Shift+ K
Mac: Cmd+ Option+K

Сочетания клавиш консоли Internet Explorer

F12 ключ

Сочетания клавиш консоли Safari

Cmd+ Option+C

S. Mayol
источник
4

console.logВ частности, это метод для разработчиков, который пишет код, чтобы незаметно информировать разработчиков о том, что делает код. Его можно использовать для предупреждения о наличии проблемы, но он не должен заменять интерактивный отладчик, когда приходит время отладки кода. Его асинхронный характер означает, что зарегистрированные значения не обязательно представляют значение при вызове метода.

Вкратце: регистрируйте ошибки с помощью console.log(если есть), затем исправляйте ошибки, используя выбранный отладчик: Firebug , инструменты разработчика WebKit (встроенные в Safari и Chrome ), инструменты разработчика IE или Visual Studio.

outis
источник
4

Я действительно чувствую легкость веб-программирования, когда начинаю console.logотлаживать.

var i;

Если я хочу проверить значение iвремени выполнения ..

console.log(i);

Вы можете проверить текущее значение iна вкладке консоли Firebug. Специально используется для отладки.

Aksu
источник
4

Он используется для входа (что угодно, что вы передаете) на консоль Firebug . Основное использование будет отлаживать ваш код JavaScript.

Поэлинка Дорин
источник
4

Помимо использования, упомянутых выше, console.logможно также распечатать на терминал в node.js. Сервер, созданный с помощью Express (например,), может использовать console.logдля записи в выходной файл журнала.

surajck
источник
2

В Java-скриптах нет функций ввода и вывода. Поэтому для отладки кода используется метод console.log (). Это метод ведения журнала. Он будет напечатан в журнале консоли (средства разработки).

Его нет в IE8 и ниже, пока вы не откроете инструмент разработки IE.

NavyaKumar
источник
2

Это не имеет ничего общего с JQuery. console.log()Ссылается на логарифмической функции на консоли объекта, который предоставляет методы для записи информации на консоль браузера. Эти методы предназначены только для целей отладки и не должны использоваться для представления информации конечным пользователям.

Аравинда Мевалаараччи
источник