Глиф Учебники

Урок 1. Первая программа: где запускать JavaScript

Курс «JavaScript» · урок 1 из 10 · 6 минут чтения

Код на JavaScript выполняет программа-движок. Он есть в каждом браузере: V8 в Chrome и Edge, SpiderMonkey в Firefox, JavaScriptCore в Safari. Node.js — это движок V8, вынутый из браузера и дополненный всем, что нужно программе на компьютере: работой с файлами, сетью, процессами.

Отсюда три места, где можно запустить код: консоль браузера, страница сайта и Node.js. В этом уроке — все три.

Браузер Консоль F12 → Console Страница .html <script> движок JavaScript доступно: document window alert Node.js Терминал $ node hello.js движок V8 доступно: файлы сеть процессы
Код выполняет движок: в браузере он берёт код из консоли и со страницы с тегом script, в Node.js — из файла по команде node hello.js; браузер даёт document и window, Node.js — файлы и сеть.

Консоль браузера

Самый быстрый способ попробовать JavaScript — ничего не ставить. Откройте любую страницу и нажмите F12: откроются инструменты разработчика. Перейдите на вкладку Console (в русском интерфейсе — «Консоль»). Сразу в консоль открывают сочетания Ctrl+Shift+J в Chrome и Edge и Ctrl+Shift+K в Firefox.

Наберите в консоли и нажмите Enter:

JavaScript
2 + 2

Консоль покажет 4. Теперь первая настоящая команда:

JavaScript
console.log("Привет, мир!");

console.log выводит в консоль то, что стоит в скобках. Строка текста берётся в кавычки. Под выводом консоль напишет ещё и undefined — это не ошибка: консоль показывает результат каждой команды, а console.log ничего не возвращает. Что такое undefined, разобрано в справке Чем undefined отличается от null.

Console > 2 + 2 4 > console.log("Привет, мир!"); Привет, мир! undefined результат выражения вывод console.log результат console.log: значения нет
Под каждой командой консоль показывает её результат: для 2 + 2 это 4, а console.log выводит строку «Привет, мир!», но сама возвращает undefined — значения нет.

Чтобы набрать несколько строк, переходите на новую строку сочетанием Shift+Enter: просто Enter сразу выполняет код.

Не вставляйте в консоль код, который прислал незнакомый человек («вставьте это, и получите бонус»). Код в консоли выполняется от вашего имени на открытом сайте: он может прочитать переписку, сменить пароль или отправить деньги. Поэтому Chrome при первых вставках просит набрать allow pasting — это защита именно от такого обмана.

Консоль удобна для проб, но код в ней не сохраняется. Для программ нужен файл.

Страница с тегом script

Браузер выполняет код, который стоит на странице внутри тега <script>. Создайте в редакторе файл index.html с таким текстом:

HTML
<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <title>Первая программа</title>
</head>
<body>
  <h1>Первая программа</h1>
  <script>
    console.log("Привет из файла!");
    document.querySelector("h1").textContent = "JavaScript работает";
  </script>
</body>
</html>

Сохраните файл и откройте его двойным щелчком — он откроется в браузере. Заголовок на странице сменится на «JavaScript работает», а в консоли (F12) появится строка «Привет из файла!».

Вторая строка кода нашла на странице заголовок h1 и поменяла его текст — так JavaScript управляет страницей. Подробно об этом — в уроке DOM: элементы страницы и события.

Проверьте две вещи, если ничего не произошло:

Обычно код держат не внутри страницы, а в отдельном файле .js и подключают его строкой <script src="script.js" defer></script>. Как это сделать правильно — в справке Как подключить JavaScript к HTML.

Node.js

Чтобы запускать JavaScript без браузера, установите Node.js (по шагам — в справке Как установить Node.js). Проверьте установку в терминале: в Windows — PowerShell или командная строка, в Linux и macOS — «Терминал».

Bash
node -v

Команда выводит номер версии, например v22.12.0. Если вместо этого — «команда не найдена», Node.js не установлен или терминал открыт до установки: закройте его и откройте снова.

Создайте папку для уроков. В терминале перейдите в неё командой cd, например cd Documents\js в Windows или cd ~/js в Linux. Файл с программой запускается так:

Bash
node hello.js

Создайте в папке файл hello.js с тремя строками и запустите его этой командой. Программа и то, что она выводит:

JavaScript
console.log("Привет, мир!");
console.log(2 + 3);
console.log("2 + 3 =", 2 + 3);
Вывод
Привет, мир!
5
2 + 3 = 5

Через запятую console.log выводит несколько значений подряд, разделяя их пробелом. Строка "2 + 3 =" выводится как есть, а выражение 2 + 3 сначала вычисляется.

console.log("2 + 3 =", 2 + 3); строка в кавычках выводится как есть "2 + 3 =" 2 + 3 = выражение сначала вычисляется 2 + 3 5 вывод: 2 + 3 = 5 пробел
В console.log("2 + 3 =", 2 + 3) строка в кавычках выводится как есть, выражение 2 + 3 сначала превращается в 5, а между значениями встаёт пробел: получается 2 + 3 = 5.

Команда node без имени файла открывает такую же консоль, как в браузере: набираете строку — сразу видите результат. Выход — команда .exit или Ctrl+C, нажатое два раза подряд.

В Node.js нет страницы, поэтому нет и document, window, alert: попытка их использовать даёт ошибку ReferenceError: document is not defined. Зато Node.js умеет то, чего браузер не позволяет: читать и писать файлы на диске, запускать программы, принимать подключения по сети.

Почти все примеры курса до урока о DOM — для Node.js: под программой показано, что она выводит. Их можно запускать и в консоли браузера, только вывод массивов и объектов там выглядит немного иначе.

Комментарии

Комментарий — текст для человека, движок его пропускает. Однострочный начинается с //, многострочный стоит между /* и */:

JavaScript
// Это комментарий до конца строки
console.log("Работает"); // и это комментарий

/*
  Многострочный комментарий:
  удобно, чтобы описать, что делает программа.
*/

Комментариями удобно на время «выключать» строки кода, не стирая их.

Точка с запятой

Команды в JavaScript разделяются точкой с запятой ;. В конце строки её можно не ставить — движок допишет сам, но в редких случаях угадает не так, как задумано. В курсе точка с запятой стоит везде: так меньше сюрпризов.

Частые ошибки

Коротко

Проверьте себя

1. Как открыть консоль браузера, чтобы запустить в ней код?
2. Чем запускается файл hello.js на компьютере?
3. Почему в Node.js не работает document.querySelector?
4. Что выведет console.log("5 + 5 =", 5 + 5)?