Как делать11 октября 2026 г.8 мин чтения
JavaScript с нуляШаг 1 из 9

Первая программа на JavaScript: как код превращается в действие

Коротко

Программа — это инструкции, которые компьютер выполняет по порядку: берёт данные, вычисляет и выводит результат. JavaScript можно запустить без установки — в консоли браузера (Ctrl+Shift+J в Chrome и Edge) — или из файла командой node имя-файла.js после установки Node.js. Первая полезная программа в этом уроке — калькулятор чаевых: сумма счёта на входе, чаевые и итог на выходе.

Пошаговый урокУровень: НачальныйОсновы программированияПрактика: ~45–90 мин

После материала вы сможете

  • запустить JavaScript в консоли браузера и из файла командой node
  • написать программу «ввод → вычисление → вывод» и передать ей данные через аргументы командной строки
  • прочитать сообщение об ошибке: найти файл, номер строки и отличить SyntaxError от ReferenceError
  • изменить программу под свою задачу: добавить новый входной параметр и расчёт

Проверено на

Node.js 24 LTS (24.18.0)Microsoft Edge 155

Сверено с документацией: 11 октября 2026 г.

Содержание
  1. 01Что такое программа: инструкции, данные, результат
  2. 02Где выполняется JavaScript: браузер и Node.js
  3. 03Консоль браузера: первая строка кода
  4. 04Файл и запуск через node
  5. 05Ввод, вычисление, вывод: калькулятор чаевых
  6. 06Синтаксические ошибки и как их читать
  7. 07Практика и что дальше

Что такое программа: инструкции, данные, результат

Программа — это текст с инструкциями для компьютера. Компьютер не догадывается, что вы имели в виду, и не пропускает «очевидные» шаги: он делает ровно то, что написано, и в том порядке, в каком написано. Почти любая программа устроена одинаково: получает данные, что-то с ними делает и выдаёт результат. Калькулятор чаевых получает сумму счёта и процент, умножает и делит, а затем показывает чаевые и итог.

Данные на входеИнструкцииВычислениеРезультат на выходе
Одна и та же схема работает и для калькулятора чаевых, и для интернет-магазина — меняется только масштаб.

JavaScript — интерпретируемый язык: браузер или Node.js получает исходный текст программы и выполняет его без отдельного шага сборки. Как поясняет MDN, современные движки ускоряют работу JIT-компиляцией — переводят код в быстрый двоичный вид прямо во время выполнения, — но для вас это незаметно: написали строку, запустили, увидели результат. Поэтому JavaScript удобен для первой программы.

Где выполняется JavaScript: браузер и Node.js

Язык один, а мест выполнения — сред — два основных. В браузере JavaScript управляет страницей: реагирует на клики, меняет текст, отправляет формы. Node.js — открытая кроссплатформенная среда, которая запускает тот же движок V8, что и Chrome, но вне браузера: на вашем компьютере или на сервере. В уроке о том, как устроен сайт, это две половины одной системы — фронтенд и бэкенд.

Что установить

Браузер
Ничего: подходит Chrome, Edge, Firefox или Safari
Node.js
Node.js с nodejs.org

Где писать код

Браузер
В консоли инструментов разработчика или в теге script на странице
Node.js
В файле .js, запуск командой node

Что доступно кроме языка

Браузер
Страница (document), окно браузера, события
Node.js
Файлы, сеть, аргументы запуска (process)

Типичная задача

Браузер
Интерактивность интерфейса
Node.js
Серверы, скрипты, инструменты разработки

Как вывести результат

Браузер
console.log — в консоль браузера
Node.js
console.log — в терминал

Сам язык стандартизирован в спецификации ECMAScript (ECMA-262), и всё, что в этой траектории касается языка — переменные, условия, циклы, функции, — одинаково работает в обеих средах. Различаются только встроенные объекты окружения: в Node.js нет document, а в браузере нет process. Если пример обращается к одному из них, он запустится только в своей среде.

Консоль браузера: первая строка кода

  1. Откройте любую страницу

    Подойдёт даже пустая вкладка. Консоль выполняет код в контексте открытой страницы, но ничего на сайте не ломает: всё исчезнет после перезагрузки.

  2. Откройте консоль

    В Chrome и Edge — Ctrl+Shift+J на Windows и Linux или Cmd+Option+J на macOS. Клавиша F12 открывает инструменты разработчика на последней использованной панели — тогда выберите вкладку Console.

  3. Введите строку и нажмите Enter

    Консоль сразу выполнит её и покажет результат ниже. Чтобы перенести строку без выполнения, нажмите Shift+Enter.

hello.js
console.log("Привет, InterLAB!"); // → Привет, InterLAB!
console.log(2 + 3);               // → 5
console.log("2" + "3");           // → 23
Введите строки по одной в консоль браузера. Комментарий после // → — то, что появится в консоли.

console.log — команда «покажи значение». В скобках — что показать: текст в кавычках, число или выражение. Выражение 2 + 3 сначала вычисляется, и в консоль попадает 5. А "2" + "3" даёт 23: в кавычках это не числа, а строки, и плюс их склеивает. Разницу между числами и строками подробно разберём в следующем уроке — пока просто запомните, что кавычки меняют смысл.

После каждой строки с console.log консоль покажет ещё и серое undefined. Это не ошибка: консоль выводит значение последнего выполненного выражения, а сама console.log ничего не возвращает — по документации MDN её результат равен undefined. Если ввести просто 2 + 3 без console.log, консоль покажет 5 — значение выражения.

Файл и запуск через node

Консоль удобна для проб, но программа, которую нужно запускать снова и снова, живёт в файле. Для этого понадобится Node.js и терминал — окно, где команды вводятся текстом.

  1. Установите Node.js

    Скачайте LTS-версию на nodejs.org и установите. Проверьте в терминале командой node --version: должна появиться версия, например v24.18.0.

  2. Создайте папку и файл

    Сделайте папку first-js, а в ней — файл hello.js с тремя строками из предыдущего раздела. Подойдёт любой редактор кода, например VS Code.

  3. Запустите программу

    Откройте терминал в папке first-js и выполните node hello.js. Node.js прочитает файл сверху вниз и выведет результат в терминал.

  4. Меняйте и запускайте снова

    Отредактировали файл — снова node hello.js. Команда node --watch hello.js сама перезапускает программу при каждом сохранении файла.

terminal
$ node --version
v24.18.0

$ node hello.js
Привет, InterLAB!
5
23
Запуск из папки first-js. Строка с $ — команда, которую вы вводите, остальное — ответ. Номер версии у вас может отличаться.

Комментарии после // Node.js пропускает — они для людей. Расширение .js означает обычный файл JavaScript. В документации Node.js встречается и .mjs — так обозначают файлы-модули с командой import; к модулям вернёмся позже, первым программам они не нужны.

Ввод, вычисление, вывод: калькулятор чаевых

Теперь программа, которая решает настоящую задачу. Сначала версия для консоли браузера: исходные данные записаны прямо в коде.

tip-browser.js
const bill = 12500;    // сумма счёта, ₸
const percent = 10;    // процент чаевых

const tip = bill * percent / 100;
const total = bill + tip;

console.log(`Чаевые: ${tip} ₸`);          // → Чаевые: 1250 ₸
console.log(`Итого к оплате: ${total} ₸`); // → Итого к оплате: 13750 ₸
Работает и в консоли браузера, и через node tip-browser.js — вывод одинаковый.
  • const bill = 12500; — даём значению имя. Дальше в программе можно писать bill вместо числа. Подробно о const и let — в следующем уроке.
  • * и / — умножение и деление. Как в математике, они выполняются раньше сложения, поэтому bill * percent / 100 даёт 10% от счёта.
  • Текст в обратных кавычках — шаблонная строка: вместо ${tip} в неё подставляется значение. Обратная кавычка набирается клавишей Ё в английской раскладке.
  • Точка с запятой завершает инструкцию. JavaScript часто расставляет их сам, но явная точка с запятой избавляет от редких сюрпризов.

Программа с данными внутри кода считает только один счёт. Сделаем так, чтобы сумма и процент приходили снаружи — из командной строки. В Node.js для этого есть process.argv: список аргументов, с которыми запущена программа. По документации Node.js первый элемент — путь к самому node, второй — путь к файлу программы, а дальше идут значения, которые вы написали после имени файла. Нумерация начинается с нуля, поэтому сумма — это process.argv[2], процент — process.argv[3].

tip.js
// tip.js — калькулятор чаевых
// Запуск: node tip.js <сумма счёта> <процент>
const bill = Number(process.argv[2]);
const percent = Number(process.argv[3]);

const tip = Math.round(bill * percent / 100);
const total = bill + tip;

console.log(`Счёт: ${bill} ₸`);
console.log(`Чаевые ${percent}%: ${tip} ₸`);
console.log(`Итого: ${total} ₸`);
Версия для Node.js: process.argv есть только в Node.js, в браузере этого объекта нет.
terminal
$ node tip.js 12500 10
Счёт: 12500 ₸
Чаевые 10%: 1250 ₸
Итого: 13750 ₸

$ node tip.js 8990 15
Счёт: 8990 ₸
Чаевые 15%: 1349 ₸
Итого: 10339 ₸
Два запуска одной программы с разными данными.

Аргументы командной строки всегда приходят текстом, поэтому их оборачивают в Number(...) — превращают строку «12500» в число 12500. Math.round округляет до ближайшего целого: 15% от 8990 — это 1348,5, а в чеке будет 1349 ₸.

Синтаксические ошибки и как их читать

Ошибки — нормальная часть работы, и сообщение об ошибке — подсказка, а не приговор. Для начала важно различать два вида. Синтаксическая ошибка (SyntaxError) возникает, когда движок не может разобрать текст программы: по MDN, он встретил символы или их порядок, не соответствующие правилам языка. В таком случае не выполняется ни одна строка — даже те, что стоят выше ошибки.

broken.js
const bill = 12500;
console.log("Считаю чаевые…");
console.log(`Итого: ${bill * 1.1} ₸`;
Файл с ошибкой: в третьей строке нет закрывающей скобки.
terminal
$ node broken.js
…\first-js\broken.js:3
console.log(`Итого: ${bill * 1.1} ₸`;
                                ^^^^

SyntaxError: missing ) after argument list
    at …

Node.js v24.18.0
Путь к файлу сокращён, служебные строки стека (at …) опущены. «Считаю чаевые…» не появилось: программа не запускалась.

Читайте сообщение сверху вниз. Первая строка — файл и номер строки (broken.js:3). Дальше — сама строка кода, а значки ^ под ней показывают место, где движок понял, что что-то не так. Затем тип и описание ошибки: missing ) after argument list — «не хватает ) после списка аргументов». Строки, начинающиеся с at, — стек вызовов внутри Node.js; при синтаксической ошибке их можно не читать. В консоли браузера то же сообщение выглядит как Uncaught SyntaxError: missing ) after argument list.

Второй вид — ошибка во время выполнения. Синтаксис правильный, программа запустилась, но на какой-то строке не смогла продолжить. Самый частый случай у новичков — опечатка в имени:

terminal
$ node typo.js
Считаю чаевые…
…\first-js\typo.js:3
console.log(`Итого: ${totl} ₸`);
                      ^

ReferenceError: totl is not defined
    at …

Node.js v24.18.0
В typo.js объявлено имя total, а в третьей строке написано totl. Первая строка вывода успела выполниться.

SyntaxError: missing ) after argument list

Что это значит
Не закрыта круглая скобка
Что проверить
Пары скобок в указанной строке

SyntaxError: Unexpected token / Unexpected identifier

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

ReferenceError: … is not defined

Что это значит
Имя не найдено
Что проверить
Опечатку и регистр букв: total и Total — разные имена

NaN в результате

Что это значит
Не ошибка, а «не число» в вычислениях
Что проверить
Что данные на входе действительно числа

Практика и что дальше

В этом уроке const мелькал как «имя для значения», а "2" + "3" превратилось в 23. Следующий шаг траектории — переменные и типы данных: чем let отличается от const, какие бывают типы значений, откуда берётся NaN и как сравнивать значения без сюрпризов. Работа в терминале подробнее разобрана в отдельном уроке о командной строке, а чтение длинных сообщений об ошибках со стеком вызовов — в материале об отладке.

Как проверено4 · пройденосверено 11 октября 2026 г.
  • запущено, работает

    hello.js, tip-browser.js (RU и EN)

    node 24.18.0: stdout построчно сверен с комментариями // → (скрипт check-arrows), файлы запущены и как .js, и как .mjs; те же файлы выполнены в Microsoft Edge 155 headless (тег script, перехват console.log) — вывод совпал

  • запущено, работает

    tip.js, tip-split.js, duration.js (RU и EN)

    node 24.18.0 с аргументами 12500 10, 8990 15, без аргументов (NaN), 12500 10 4, 135 — вывод .js и .mjs совпал; блоки shellsession в статье сгенерированы из реального вывода

  • запущено, работает

    broken.js, typo.js — вывод ошибок

    node 24.18.0: SyntaxError: missing ) after argument list (строки до ошибки не выполнены), ReferenceError: totl is not defined (первая строка выполнена); в Edge 155: Uncaught SyntaxError / Uncaught ReferenceError с теми же сообщениями. В статье путь сокращён и строки стека опущены — это указано в подписи

  • запущено, работает

    node --version в shellsession

    реальный вывод v24.18.0

«Запущено» — код выполнен во временном проекте или контейнере, вывод в статье взят из прогона. «Частично» — проверено с заглушками вместо внешних сервисов. «Не запускалось» — нужны устройство, аккаунт или ключ; шаги сверены с официальной документацией. Файлы проверочного проекта и логи запусков сохранены в архиве InterLAB.

Расскажите о задаче — мы изучим запрос и свяжемся с вами

Есть задача?
Обсудим и оценим — бесплатно.

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

  • Оценка объёма и рисков до старта
  • NDA — по вашему или нашему шаблону
  • Старт работ в течение недели

Не присылайте через форму пароли, ключи доступа и исходный код — безопасную передачу доступа обсудим отдельно.

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