Часть 4. Вывод на экран в Javascript. Log, Forest, log! И что такое console.
Теперь, когда мы понимаем, как выглядит вызов функции, нам проще увидеть похожий паттерн (шаблон) в коде для Javascript:
console.log(...);
Здесь мы видим вызов функции log (а не print как в Питоне, или printf как в Си), в которую передаётся текст для отображения.
Но у вас могут возникнуть 3 вопроса:
-
Что значит
log? -
Что такое
console? -
И почему перед функцией
logнаписаноconsole.(с точкой)?
Давайте разберёмся со всем по порядку.
Log, Forest, log!
Заглянем в англо-русский словарь и посмотрим значение слова log. Ну как всегда в английском — у одного слова куча значений: есть и существительные, и глаголы, и прилагательные.
Когда-то мы с вами говорили:
название переменной должно отражать суть того, что она хранит: именование (naming) — одна из сложнейших задач в программировании: какое имя придумать переменной так, чтобы сразу было понятно, для чего эта переменная нужна
То же самое относится и к функциям. Функция — это по сути команда, инструкция, проще говоря — действие. Поэтому в программировании принято функции всегда называть глаголом или начинать их имя с глагола, например:
— print (напечатать);
— getUserInfo (получить информацию о пользователе);
— setCurrentDate (установить текущую дату);
— isResponseValid (ответ корректный? — в английском “is” означает «есть, являться», и в вопросе глагол идет первым, поэтому дословно название функции звучит как «является ответ корректным?»).
Поэтому, возвращаясь к слову log мы можем отбросить «бревно», «колоду», «журнальный» и тому подобные слова, и остановиться на «регистрировать, протоколировать, записывать в журнал».
На программистском же жаргоне часто говорят «логировать».
Помните, когда мы говорили о том, почему всё начинается с примера «Привет, мир!», мы сказали, что очень важно в первую очередь научиться видеть, чем занимается программа в процессе своей работы. Для этого программа должна уметь выводить сообщения про свою текущую деятельность либо на экран, либо в специальный файл.
Если программа пишет в файл все свои события, то такой файл называется лог-файлом или журналом регистрации (событий).
Console
Когда-то компьютеры занимали целые комнаты, и у оператора было специальное устройство — консоль (пульт управления) с экраном и клавиатурой — через которое он «общался» с компьютером.
Современная консоль в браузере или IDE (среде разработки) — это её цифровой потомок, который:
-
даёт виртуальное окно для «общения» с программой;
-
является местом, где программа оставляет свои «заметки» (логи);
-
позволяет увидеть, что программа «думает» или как она работает.
И вот функция console.log выводит свои сообщения именно туда.
Чтобы найти консоль в вашем браузере:
-
Нажмите
F12в браузере. -
Найдите вкладку
Consoleи перейдите в неё. -
Вот она — наша console!
-
Теперь вы можете после знака
>набратьconsole.log("Hello, World!");и тут же увидеть результат — строку"Hello, World!".
Но так как мы пока работаем в песочнице, то все сообщения в результате выполнения console.log будут появляться в окошке Output:
Про точку после console
И у нас остался последний вопрос: почему функция называется console.log, а не, например, logToConsole (логировать в консоль)? Или просто log?
По-настоящему полный ответ на этот вопрос затрагивает такую огромную тему, как ООП — объектно-ориентированное программирование. Но сейчас мы не будем погружаться так глубоко, а ограничимся более простым объяснением.
Представьте себе, что вы хотите выводить в консоль не только обычные сообщения, но и предупреждения, а еще ошибки. Тогда у вас появились бы функции: warnToConsole (предупредить в консоль) и errorToConsole (выдать ошибку в консоль).
Как видите у нас во всех трех функциях повторялся бы один и тот же паттерн: ToConsole, потому что все эти функции относились бы к консоли:
-
logToConsole -
warnToConsole -
errorToConsole
Создатели Javascript решили: почему бы тогда не ввести объект console, у которого будут свои функции log, warn и error. А вызывать их будут через точку: console.log итд.
Ну а подробнее об этом мы поговорим с вами, когда начнем разбираться с ООП.