Почему console.log () считается лучше, чем alert ()? - PullRequest
22 голосов
/ 20 ноября 2011

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

Ответы [ 9 ]

34 голосов
/ 20 ноября 2011
  • alert() является блокирующим
  • alert() не может быть легко подавлено в неотлаженной среде
  • console обычно форматирует ваши объекты красиво и позволяет обойти их
  • операторы журналирования часто имеют интерактивный указатель на код, который выдает оператор журналирования
  • , вы не можете одновременно просматривать более одного alert() сообщения
  • console с может иметь разныерегистрация уровней с интуитивно понятным форматированием
5 голосов
/ 20 ноября 2011

Попробуйте:

var data = {a: 'foo', b: 'bar'};
console.log(data);
alert(data);

Вы увидите, что console.log показывает вам объект, а alert дает вам [object Object], что бесполезно.Это также верно, например, для элементов:

alert(document.body); // [object HTMLBodyElement] (exact result depends on your browser)
4 голосов
/ 20 ноября 2011

Оба - просто способ получить информацию о том, что происходит в данный момент в вашем JS. Раньше я всегда использовал alert (), но по нескольким причинам перешел на console.log (). (Примечание: консоль предлагает больше, чем просто log (), посмотрите, что еще она может сделать).

Я думаю, что основными преимуществами console.log () являются:

  • не останавливает процессы, как предупреждение
  • вы можете видеть, какая строка какого сценария выкинула запись журнала, не помещая строку в ваше сообщение
  • если у вас отлаживается более одной вещи, это может раздражать, если вы продолжаете нажимать 'ok' в своих окнах предупреждений
  • вы можете регистрировать объекты и получать много полезной информации (спасибо за напоминание, другие ответчики)

В конце концов, все сводится к тому, как вы предпочитаете отлаживать.

Одна вещь, о которой нужно знать. Не все браузеры ПОДДЕРЖИВАЮТ console.log () и будут иметь проблемы, если вы оставите вызовы console.log () в своем коде. Предоставьте заглушку консоли, если консоль не доступна, чтобы обойти эту проблему.

3 голосов
/ 20 ноября 2011

Это неблокирующее устройство, позволяющее вам глубоко исследовать объекты (а не просто видеть результаты их toString()).

2 голосов
/ 20 ноября 2011

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

console.log также отобразит объект со значениями, где при вызове alert потребуется сначала пройти объект.

1 голос
/ 20 ноября 2011

Я полагаю, это немного дело вкуса, но использование console.log имеет ряд преимуществ:

  • Допустим, вы хотите занести в журнал 20 разных вещей, которые могут быть довольно раздражающими при предупреждении.
  • Например, вы можете регистрировать объекты, а затем проверять их.
  • Например, в инструментах Chrome Dev вы можете сохранять журнал между различными страницами.
  • Это не-блокирование
  • Это не влияет на конечного пользователя, если он забыт

Назовите несколько.

1 голос
/ 20 ноября 2011

Если вы забудете удалить оператор оповещения об отладке, это напрямую повлияет на конечного пользователя.
Если вы забудете удалить оператор console.log отладки, это не повлияет на пользователя.
Кроме того, console.log позволит вам увидеть все содержимое объекта вместо представления JavaScript toString ().

0 голосов
/ 20 ноября 2011

alert () прекращает все взаимодействие с браузером до тех пор, пока сообщение не будет отклонено, а console.log () просто напечатает сообщение на консоли.

Ex. Вы печатаете значения группы переменных, чтобы убедиться, что они верны и не хотите закрывать окно предупреждения после каждой переменной.

0 голосов
/ 20 ноября 2011

Поскольку оповещения являются PITA, остановите все до тех пор, пока они не будут введены, и не разрешайте самоанализ объекта.

Использование отладчика даже лучше при некоторых обстоятельствах.

...