Мне всегда говорили, что при отладке приложения метод JavaScript console.log()
предпочтительнее простого использования метода alert()
. Почему это? Есть ли хороший пример, кто-то может указать мне, где console.log()
, очевидно, лучший выбор?
Почему console.log() считается лучше, чем alert()?
Ответ 1
-
alert()
блокируется -
alert()
не может быть легко подавлен в среде без отладки -
console
обычно красиво форматирует ваши объекты и позволяет перемещаться по ним. - в операторах ведения журнала часто есть интерактивный указатель на код, который выдал оператор регистрации
- вы не можете просматривать более одного сообщения
alert()
за раз -
console
могут иметь разные уровни ведения журнала с интуитивным форматированием
Ответ 2
Попробуйте следующее:
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)
Ответ 3
Оба - это просто способ получить информацию о том, что происходит в то время в вашем JS. Я использовал alert() все время, но перешел на console.log() по нескольким причинам. (Замечание: консоль предлагает больше, чем просто журнал(), посмотрите, что еще он может сделать).
Я думаю, что основными преимуществами console.log() являются:
- он не останавливает процессы, такие как alert.
- вы можете видеть, какая строка того, что script выбрала запись журнала, не помещая строку в ваше сообщение
- Если у вас есть несколько вещей, которые вы отлаживаете, это может стать настоящим раздражающим для того, чтобы вы нажимали "ok" в своих предупреждающих ящиках.
- вы можете регистрировать объекты и получать много полезной информации (спасибо за напоминание, другие ответчики)
В конце концов это сводится к тому, как вы предпочитаете отлаживать.
Одна вещь, о которой нужно знать. Не все браузеры SUPPORT console.log() будут иметь проблемы, если вы оставите свои вызовы console.log() в коде. Предоставьте консольный заглушку, если консоль недоступна, чтобы обойти эту проблему.
Ответ 4
Он не блокирует и позволяет вам глубоко изучать объекты (а не просто видеть результаты toString()
их).
Ответ 5
alert
должен быть уволен, прежде чем выполнение javascript может возобновиться. console.log
не имеет такой проблемы.
console.log
также отобразит объект со значениями, где вызов alert
потребует, чтобы вы сначала пересекли объект.
Ответ 6
Если вы забыли удалить инструкцию для отладки, она будет напрямую влиять на конечного пользователя.
Если вы забудете удалить инструкцию debuggins console.log, пользователь не будет затронут.
Кроме того, console.log позволит вам видеть полное содержимое объекта вместо представления JavaScript toString().
Ответ 7
Я думаю, что это несколько вопрос вкуса, но есть несколько преимуществ использования console.log:
- Предположим, вы хотите зарегистрировать 20 разных вещей, что было бы очень неприятно с предупреждением.
- Вы можете регистрировать объекты, например, и затем проверять их.
- В инструментах Chrome Dev, например, вы можете сохранить журнал между разными страницами.
- Он не блокирует
- Это не влияет на конечного пользователя, если забыли
Чтобы назвать несколько.
Ответ 8
Поскольку оповещения представляют собой PITA, останавливайте все до тех пор, пока они не будут введены, и не позволяйте интроспекции объектов.
Использование отладчика еще лучше при некоторых обстоятельствах.
Ответ 9
alert() останавливает все взаимодействия с браузером до тех пор, пока сообщение не будет отклонено, а console.log() просто распечатает сообщение на консоли.
Ex. Вы печатаете значения кучи переменных, чтобы убедиться, что они правы и не хотят отклонять окно предупреждения после каждой переменной.