MakeFirstStep· Frontend + ИИ

Урок 1 · JS-фундамент

Старт курса и настройка среды

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

  • Объяснить, как браузер выполняет JavaScript и чем он отличается от HTML и CSS
  • Подключить скрипт на страницу тремя способами и выбрать правильное место для <script>
  • Пользоваться консолью: console.log, warn, error, table — и читать сообщения об ошибках
  • Открыть DevTools и найти в них Elements, Console и Sources
  • Установить VS Code, расширения и Live Server, запустить первый скрипт на своём компьютере
  • Знать правила работы с ИИ на курсе и понимать, чем чат, автодополнение и агент отличаются друг от друга
Как работать с этой страницей

Весь код на тёмном фоне с кнопкой ▶ Запустить — живой. Его можно менять прямо здесь и сразу видеть результат в консоли под ним. Сломали — нажмите ↺ Сброс. Окна с вкладками index.html / script.js — мини-страницы: сверху код, снизу превью. Подсказки к задачам спрятаны: сначала попробуйте сами. Блоки с надписью «Терминал» или «Только чтение» запускать нельзя — это инструкции для вашего компьютера.

Важно: окна alert, prompt и confirm на этой странице заблокированы браузерной «песочницей», в которой работает код. Поэтому их мы разберём на примерах для чтения, а запускать будете на своей странице в VS Code.

01 Как JavaScript работает в браузере

Страница состоит из трёх языков, и у каждого своя работа. Вы уже знаете два из них:

ЯзыкОтвечает заПример на странице
HTMLЧто на странице: структура и содержаниеЗаголовок, кнопка, список товаров
CSSКак это выглядитЦвета, сетка, отступы, адаптив
JavaScriptЧто происходит: поведение и логикаКлик по кнопке, подсчёт суммы, проверка формы
Аналогия из жизни

Представьте чойхону. HTML — это здание: стены, столы, кухня. CSS — интерьер: ковры, свет, расстановка столов. А JavaScript — официант и повара: они принимают заказ, несут чай, пересчитывают счёт. Здание без людей красивое, но пустое. Сайт без JavaScript — то же самое.

Что делает браузер, когда вы открываете страницу

1. HTMLБраузер читает файл сверху вниз
→
2. DOMСтроит «дерево» из элементов страницы
→
3. CSSКрасит и раскладывает элементы
→
4. JavaScriptВыполняет код и может менять страницу

Внутри каждого браузера есть «двигатель», который понимает JavaScript: в Chrome и Edge он называется V8, в Firefox — SpiderMonkey, в Safari — JavaScriptCore. Вам не нужно ничего устанавливать, чтобы JavaScript заработал: он уже есть в вашем браузере. Именно поэтому мы начинаем с браузера, а Node.js — программу для запуска JS вне браузера — подключим позже, на уроке 17.

Как JavaScript читает код

  • Сверху вниз, строка за строкой. Как вы читаете рецепт: сначала первый шаг, потом второй.
  • Одна команда — одно действие. Команды (их называют «инструкциями») принято заканчивать точкой с запятой ;.
  • Регистр важен. console и Console для JavaScript — два разных слова.
  • Если на какой-то строке случилась ошибка, код ниже не выполнится. Браузер остановится и напишет сообщение в консоль.

Самая первая команда, которую вы выучите, — console.log. Она «печатает» значение в консоль. Попробуйте: нажмите «Запустить», потом поменяйте текст и запустите снова.

Первая программа · Ctrl + Enter
console.log("Салом, JavaScript!");
console.log("Я учусь программировать в MakeFirstStep");

Проверьте на практике, что порядок важен. Строки выполняются сверху вниз, и результат в консоли идёт в том же порядке:

Можно редактировать · Ctrl + Enter
console.log("Первый шаг");
console.log("Второй шаг");
console.log("Третий шаг");

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

Этот код выдаст ошибку · Ctrl + Enter
console.log("Шаг 1: всё хорошо");
console.log("Шаг 2: всё хорошо");
console.log(шаг3);
console.log("Шаг 4: сюда мы не дойдём");
Частая ошибка

Думать, что JavaScript «понимает, что вы имели в виду». Нет: он делает ровно то, что написано, буква в букву. Лишний пробел в кавычках, заглавная буква вместо маленькой, забытая скобка — и вместо результата вы получите красное сообщение. Это нормально: ошибки встречаются у всех программистов каждый день, а читать их — отдельный навык, который мы сегодня начнём тренировать.

Читать подробнее: learn.javascript.ru — Привет, мир! · MDN — Что такое JavaScript

Практика: закрепляем

Две короткие задачи, чтобы привыкнуть к редактору: впишите код, нажмите «Запустить» и сравните результат с ожидаемым.

ЗАДАЧА 1.1

Первое слово JavaScript

лёгкая

Выведите в консоль строку Салом, Душанбе! — ровно так, с восклицательным знаком.

Можно редактировать · Ctrl + Enter
// напишите команду console.log с текстом в кавычках
Ожидаемый результат
Салом, Душанбе!
Подсказка 1

Команда выглядит так: console.log("текст");. Текст в кавычках, всё вместе в круглых скобках.

Подсказка 2

Скопируйте строку из примера выше и замените текст в кавычках на Салом, Душанбе!.

ЗАДАЧА 1.2

Расставьте шаги по порядку

лёгкая

Рецепт плова перепутался: JavaScript выполняет строки по порядку, поэтому в консоли шаги идут не так, как нужно. Переставьте строки местами (не меняя текст), чтобы получилась правильная последовательность.

Можно редактировать · Ctrl + Enter
console.log("3. Подать плов с салатом");
console.log("1. Обжарить мясо и морковь");
console.log("2. Добавить рис и воду");
Ожидаемый результат
1. Обжарить мясо и морковь
2. Добавить рис и воду
3. Подать плов с салатом
Подсказка 1

Порядок вывода всегда совпадает с порядком строк в коде. Значит, менять нужно порядок строк, а не их содержимое.

Подсказка 2

Строку «1. …» нужно поднять на самый верх, а строку «3. …» опустить вниз. В редакторе VS Code это делается сочетанием Alt + ↑/↓, а здесь — просто выделите и вырежьте или перепишите.

02 Подключаем скрипт: inline, внешний файл, defer

Чтобы браузер выполнил JavaScript, код нужно «положить» на страницу с помощью тега <script>. Есть два способа.

Способ 1. Код прямо в HTML (inline)

Только чтение · index.html
<body>
  <h1>Моя страница</h1>

  <script>
    console.log("Салом из inline-скрипта!");
  </script>
</body>

Удобно для короткой проверки, но в настоящих проектах так не делают: HTML превращается в кашу, а код нельзя использовать на другой странице.

Способ 2. Отдельный файл (внешний скрипт)

Это основной способ. Код лежит в файле script.js рядом с index.html, а в HTML вы только ссылаетесь на него через атрибут src — точно так же, как <link href="style.css"> подключает CSS.

Только чтение · index.html
<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <title>Первый скрипт</title>
  <link rel="stylesheet" href="style.css">
  <script src="script.js" defer></script>
</head>
<body>
  <h1>Салом, JavaScript!</h1>
</body>
</html>
Только чтение · script.js
console.log("Салом из script.js!");
Аналогия из жизни

Inline-скрипт — это записка, приклеенная прямо к стене. Внешний файл — это полка с папками: на стене висит только ярлык «см. папку script.js», а все документы лежат в папке, и их можно открыть из любой комнаты (с любой страницы).

src
Адрес файла со скриптом. script.js — рядом с HTML, js/script.js — в подпапке js, ../script.js — на уровень выше.
Закрывающий тег
Всегда нужен: <script src="..."></script>. Записать как <script src="..." /> нельзя — страница сломается.
defer
Атрибут «подожди». Браузер скачивает файл параллельно с чтением страницы, но запускает его только после того, как весь HTML прочитан.

Где держать тег script

Помните схему из прошлого раздела: браузер читает HTML сверху вниз. Если скрипт стоит выше элемента, к которому обращается, то в момент запуска такого элемента ещё нет. Посмотрите на живом примере. В трёх местах мы просим у страницы заголовок h1 (как это работает, разберём на уроке 8 — пока важно только слово null — «ничего нет»).

До и после заголовка · Ctrl + Enter
<script>
  console.log("скрипт ВЫШЕ заголовка:", document.getElementById("title"));
</script>

<h1 id="title">Салом, MakeFirstStep!</h1>

<script>
  console.log("скрипт НИЖЕ заголовка:", document.getElementById("title"));
</script>
Предпросмотр
Нажмите «Запустить», чтобы увидеть результат.

Первый скрипт увидел null: заголовка на странице ещё не было. Второй и третий — нашли <h1#title>. Отсюда три рабочих правила:

ВариантКак выглядитКогда использовать
defer в <head><script src="script.js" defer></script>Наш выбор на курсе. Подключение видно сразу вверху файла, а выполнение — после загрузки страницы.
В конце <body><script src="script.js"></script> перед </body>Старый, но рабочий способ. Часто встречается в чужом коде.
В <head> без defer<script src="script.js"></script>Обычно ошибка: скрипт запускается, когда страницы ещё нет, и не находит элементов.

Есть ещё атрибут async: он запускает скрипт сразу, как только скачал, не дожидаясь страницы и других скриптов. Так подключают счётчики аналитики. Для наших программ он не подходит: порядок запуска не гарантирован. А type="module" (уроки 17–18) ведёт себя как defer автоматически.

Частые ошибки при подключении
  • Скрипт «не работает», в консоли пусто. Проверьте путь в src: skript.js и script.js — разные файлы. На сервере регистр тоже важен: Script.js ≠ script.js.
  • В консоли красная строка «Failed to load resource: 404». Браузер не нашёл файл: он лежит в другой папке или назван иначе.
  • Файл называется script.js.txt. На Windows расширения по умолчанию скрыты — включите их (Проводник → Вид → Показать → Расширения имён файлов).
  • Изменил код, а в браузере всё по-старому. Файл не сохранён (белая точка у вкладки в VS Code) или браузер показывает старую копию: обновите страницу с очисткой кэша — Ctrl + Shift + R (Windows) или Cmd + Shift + R (macOS).
  • Если у тега есть src, то код внутри него игнорируется. Нужно одно из двух: либо src, либо код внутри.

Читать подробнее: learn.javascript.ru — Структура кода · MDN — элемент <script>

Практика: закрепляем

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

ЗАДАЧА 2.1

Найди ошибку: регистр букв

лёгкая

Скрипт ничего не выводит, а в консоли красное сообщение. Найдите опечатки и исправьте их. Обратите внимание: ошибка в первой же строке остановит выполнение.

Можно редактировать · Ctrl + Enter
Console.log("Урок 1 начался");
console.Log("Скрипт работает");
Ожидаемый результат
Урок 1 начался
Скрипт работает
Подсказка 1

Прочитайте красное сообщение: оно называет слово, которое JavaScript не знает. Сравните это слово с тем, как пишется команда в примерах выше — буква в букву.

Подсказка 2

В слове console все буквы маленькие. В слове log — тоже. Исправьте обе строки.

ЗАДАЧА 2.2

Скрипт не запускается

лёгкая

В файле script.js этой мини-страницы допущена ошибка в синтаксисе, из-за которой скрипт не запускается вообще. Исправьте её и нажмите «Запустить» — в консоли должна появиться строка подтверждения.

Проверка подключения · Ctrl + Enter
<h1>Мой первый сайт</h1>
<p>Если скрипт подключён, смотрите консоль.</p>
Предпросмотр
Нажмите «Запустить», чтобы увидеть результат.
Ожидаемый результат
Скрипт подключён
Подсказка 1

Красное сообщение подскажет, чего JavaScript не дождался. Посмотрите на конец строки: все ли скобки закрыты?

Подсказка 2

У команды console.log( есть открывающая скобка, а закрывающей нет. Добавьте ) и точку с запятой в конце.

ЗАДАЧА 2.3

Скрипт стоит слишком рано

средняя

Скрипт хочет найти заголовок h1 и вывести его, но стоит выше заголовка и видит только null. Не меняя саму команду, переставьте код так, чтобы в консоли оказалось <h1#title>.

Скрипт слишком рано · Ctrl + Enter
<script>
  console.log(document.getElementById("title"));
</script>

<h1 id="title">Салом, MakeFirstStep!</h1>
Предпросмотр
Нажмите «Запустить», чтобы увидеть результат.
Ожидаемый результат
<h1#title>
Подсказка 1

Браузер читает HTML сверху вниз. Заголовок должен оказаться на странице раньше, чем скрипт попросит его найти.

Подсказка 2

Перенесите весь блок <script> … </script> ниже строки с <h1>.

03 Консоль: log, warn, error, table

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

Аналогия из жизни

Консоль — как окошко на кухне чойхоны, через которое повар передаёт сообщения залу. «Заказ готов» (log), «рис заканчивается» (warn), «казан сломан, плов не будет» (error). Посетитель этого окошка не видит — только вы, разработчик.

console.log — печатаем значение

В скобках можно писать текст, числа и даже вычисления. Текст всегда берётся в кавычки: двойные "..." или одинарные '...' — без разницы, главное, чтобы открывающая и закрывающая были одинаковые.

Можно редактировать · Ctrl + Enter
console.log("Это текст");          // строка — в кавычках
console.log('Одинарные тоже можно');
console.log(2026);                 // число — без кавычек
console.log(7 * 8);                // JavaScript сам посчитает: 56
console.log(100 - 35);             // 65

Чем отличается "5" от 5? В кавычках — текст (строка), без кавычек — число. Для человека одинаково, а для программы нет. Подробно разберём на следующем уроке, пока достаточно запомнить: кавычки = текст.

Арифметика: что умеет JavaScript

ЗнакЧто делаетПримерРезультат
+сложение12 + 820
-вычитание100 - 3565
*умножение5 * 630
/деление10 / 42.5
%остаток от деления17 % 52
**степень2 ** 101024

Порядок действий такой же, как в школьной математике: сначала умножение и деление, потом сложение и вычитание, а скобки меняют порядок. Дробная часть в JavaScript пишется через точку: 2.5, а не 2,5.

Можно редактировать · Ctrl + Enter
console.log(10 + 5 * 2);     // умножение первым: 10 + 10
console.log((10 + 5) * 2);   // скобки первыми: 15 * 2
console.log(10 / 4);         // 2.5
console.log(17 % 5);         // остаток: 17 = 3 * 5 + 2

Несколько значений в одном log

Через запятую в console.log можно передать сколько угодно значений: консоль выведет их в одну строку через пробел. Это очень удобно: подпись слева, значение справа.

Можно редактировать · Ctrl + Enter
console.log("Курутоб:", 35, "сомони");
console.log("Два чайника по 12 сомони:", 2 * 12);
console.log("Хуш омадед", "в", "MakeFirstStep");

Текст можно и склеивать знаком +. Но осторожно: пробелы между словами придётся ставить самим — внутри кавычек.

Можно редактировать · Ctrl + Enter
console.log("Урок " + 1 + ": старт курса");
console.log("MakeFirstStep" + " " + "2026");
console.log("MakeFirstStep" + "2026");     // без пробела — слиплось
Совет

В обычном тексте иногда нужны сами кавычки. Если внутри слова есть апостроф или кавычка, возьмите кавычки другого вида: "It's a plov" или 'Он сказал "Салом"'. Для переноса строки внутри текста есть символ \n. Остальное узнаем позже.

warn, error, info, table

У консоли есть разные «голоса». В настоящей консоли браузера они выглядят по-разному: warn — жёлтая строка, error — красная, info — обычная с иконкой, а table рисует таблицу.

Можно редактировать · Ctrl + Enter
console.log("Обычное сообщение");
console.info("Информация: курс начался");
console.warn("Предупреждение: осталось мало риса");
console.error("Ошибка: казан сломан");
console.table(["самбуса", "курутоб", "чой"]);
Как это выглядит у вас в браузере

В окне запуска на этой странице всё выводится простыми строками, чтобы вы могли сравнивать результат с эталоном. В настоящей консоли warn будет жёлтым, а error — красным с кнопкой раскрытия, откуда вызвано сообщение. console.table нарисует настоящую таблицу со столбцами «index» и «Value» — откройте консоль на своей странице и посмотрите. Таблицы особенно полезны, когда выводите много однотипных данных (с массивами и объектами познакомимся на уроках 6 и 7).

МетодКогда использовать
console.log()Обычные сообщения, проверка значений. Используете чаще всего.
console.info()То же, что log, но «по смыслу» — справочная информация.
console.warn()Что-то подозрительное, но программа может работать дальше.
console.error()Что-то сломалось. Сам по себе не останавливает программу — просто пишет красным.
console.table()Много однотипных данных в виде таблицы.

Консоль как калькулятор

В DevTools консоль можно использовать и напрямую: напечатали выражение, нажали Enter — получили результат, без console.log. Стрелка ↑ достаёт предыдущую команду, Shift + Enter переносит строку, не выполняя команду. Удобно проверять мелочи: 2 ** 10, 17 % 5, "a" + "b".

Читаем сообщение об ошибке

Красная строка — не приговор, а подсказка. В ней всегда три части:

  1. Вид ошибки — SyntaxError (нарушены правила записи: не хватает скобки, кавычки), ReferenceError (используете слово, которого JavaScript не знает).
  2. Описание — например, Console is not defined («Console не определено») или missing ) after argument list («после аргументов не хватает )»).
  3. Место — имя файла и номер строки, например script.js:3. В настоящей консоли это ссылка: клик открывает именно эту строку.

Научитесь читать эти три части — и половина ошибок будет решаться за минуту. Окно запуска на этой странице тоже подсказывает: под красной строкой появляется строка с пояснением на русском.

Этот код выдаст ошибку · Ctrl + Enter
console.log("Открываем чойхону");
console.log("Добавьте закрывающую кавычку);
console.log("Закрываем чойхону");
Частые опечатки новичков
  • consol.log, console.lg, console.Log — опечатка в слове.
  • Забытая кавычка или скобка: console.log("Салом).
  • Разные кавычки в начале и в конце: "Салом'.
  • Текст без кавычек: console.log(Салом) — JavaScript решит, что Салом — команда.
  • Русские буквы вместо латинских в слове console (внешне те же с и о, а для программы — другие). Если «всё правильно, а не работает» — перепишите слово заново.
  • Забытая запятая между значениями или лишняя точка.

Читать подробнее: MDN — console · learn.javascript.ru — Консоль разработчика

Практика: закрепляем

Одиннадцать задач: начинаем с простого вывода и заканчиваем «предскажи результат». Везде — только значения, написанные прямо в коде: переменные мы изучим на следующем уроке.

ЗАДАЧА 3.1

Визитка студента

лёгкая

Выведите визитку из трёх строк. Каждая строка — отдельный console.log.

Можно редактировать · Ctrl + Enter
// три строки: имя, город, курс
Ожидаемый результат
Имя: Мадина
Город: Душанбе
Курс: Frontend + AI
Подсказка 1

Три отдельные команды console.log("...");, в каждой — одна строка в кавычках.

Подсказка 2

Первая команда: console.log("Имя: Мадина");. Знак + внутри кавычек — обычный символ текста.

ЗАДАЧА 3.2

Заказ в чайхоне

лёгкая

Вы заказали 3 самбусы по 5 сомони и 2 чайника чая по 3 сомони. Выведите одним console.log общую сумму — пусть посчитает JavaScript.

Можно редактировать · Ctrl + Enter
// 3 самбусы по 5 сомони + 2 чая по 3 сомони
Ожидаемый результат
21
Подсказка 1

В скобки console.log можно написать выражение целиком. Числа пишутся без кавычек.

Подсказка 2

Три самбусы по 5 сомони — это 3 * 5, два чая по 3 — 2 * 3. Сложите произведения. Умножение выполняется раньше сложения, скобки не нужны.

ЗАДАЧА 3.3

Ценники через запятую

лёгкая

Выведите два ценника. В каждой команде передайте три значения через запятую: подпись, число (без кавычек) и слово «сомони».

Можно редактировать · Ctrl + Enter
// Курутоб: 35 сомони
// Самбуса: 5 сомони
Ожидаемый результат
Курутоб: 35 сомони
Самбуса: 5 сомони
Подсказка 1

Консоль сама ставит пробел между значениями, поэтому пробелы в кавычках не нужны: "Курутоб:" без пробела в конце.

Подсказка 2

console.log("Курутоб:", 35, "сомони"); — и то же для самбусы.

ЗАДАЧА 3.4

Склеиваем плюсом

средняя

Выведите две строки, склеив их из кусочков знаком +: первая — из трёх частей "Урок ", число 1 и ": старт курса"; вторая — из слов "MakeFirstStep" и "2026" с пробелом между ними (пробел — отдельная строка " ").

Можно редактировать · Ctrl + Enter
// строка 1: "Урок " + 1 + ": старт курса"
// строка 2: MakeFirstStep и 2026 через пробел
Ожидаемый результат
Урок 1: старт курса
MakeFirstStep 2026
Подсказка 1

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

Подсказка 2

Вторая строка: console.log("MakeFirstStep" + " " + "2026");

ЗАДАЧА 3.5

Лепёшки на гостей

средняя

На 4 гостей принесли 17 лепёшек. Выведите три строки (каждая — результат одного выражения без подписей): сколько лепёшек достанется каждому, если делить поровну (деление), сколько лепёшек останется целиком (остаток от деления), и чему равно 2 в степени 10.

Можно редактировать · Ctrl + Enter
// 17 лепёшек на 4 гостя
Ожидаемый результат
4.25
1
1024
Подсказка 1

В таблице арифметики в начале раздела есть все три знака: /, % и **.

Подсказка 2

Три команды: console.log(17 / 4);, console.log(17 % 4); и console.log(2 ** 10);.

ЗАДАЧА 3.6

Найди ошибки: опечатки в команде

лёгкая

В этом коде четыре строки, и в каждой по опечатке в слове console или log. Исправляйте по одной: запустите, прочитайте сообщение, исправьте, запустите снова.

Можно редактировать · Ctrl + Enter
console.log("Салом!");
consol.log("Как дела?");
console.lgo("Всё хорошо");
Console.log("Хайр!");
Ожидаемый результат
Салом!
Как дела?
Всё хорошо
Хайр!
Подсказка 1

Первая строка правильная. JavaScript доходит до второй строки и там останавливается — читайте, что он пишет.

Подсказка 2

Во второй строке не хватает буквы в слове console, в третьей перепутаны буквы в log, в четвёртой первая буква должна быть маленькой.

ЗАДАЧА 3.7

Найди ошибки: кавычки и скобки

средняя

Здесь с названием команды всё в порядке, но в каждой строке потерялась кавычка, скобка или перепутаны кавычки. Исправьте все четыре строки.

Можно редактировать · Ctrl + Enter
console.log("Первая строка);
console.log("Вторая строка"
console.log('Третья строка");
console.log "Четвёртая строка";
Ожидаемый результат
Первая строка
Вторая строка
Третья строка
Четвёртая строка
Подсказка 1

Текст в кавычках должен начинаться и заканчиваться одинаковой кавычкой, а команда — открываться и закрываться скобкой.

Подсказка 2

Строка 1: не хватает закрывающей ". Строка 2: не хватает ) и ;. Строка 3: начало с ', конец с ". Строка 4: нет круглых скобок вокруг текста.

ЗАДАЧА 3.8

Предупреждение повара

лёгкая

Вместо console.log используйте console.warn и выведите предупреждение: Внимание: в казане осталось мало риса.

Можно редактировать · Ctrl + Enter
// console.warn(...)
Ожидаемый результат
Внимание: в казане осталось мало риса
Подсказка 1

Всё записывается так же, как с console.log, но слово после точки — warn.

Подсказка 2

console.warn("Внимание: в казане осталось мало риса");

ЗАДАЧА 3.9

Чек из чайханы

сложная

Выведите чек из четырёх строк. Строки с блюдами строятся из четырёх значений через запятую: название с «x», количество, знак «=» и сумма, которую считает JavaScript. Последняя строка — итог, тоже вычисленный (а не написанный числом вручную). Цены: самбуса — 5 сомони, чой — 3 сомони.

Можно редактировать · Ctrl + Enter
// Чек
// Самбуса x 3 = 15
// Чой x 2 = 6
// Итого: 21 сомони
Ожидаемый результат
Чек
Самбуса x 3 = 15
Чой x 2 = 6
Итого: 21 сомони
Подсказка 1

Строка блюда: console.log("Самбуса x", 3, "=", 3 * 5);. Сумма — выражение прямо в скобках.

Подсказка 2

Итог — сумма двух произведений: console.log("Итого:", 3 * 5 + 2 * 3, "сомони");.

ЗАДАЧА 3.10

Предскажи вывод: порядок действий

средняя

Сначала не запускайте! Прочитайте программу и в уме определите, что она выведет. Потом впишите свои прогнозы в редактор ниже: каждая строка прогноза — отдельный console.log. Нажмите «Запустить»: если прогнозы верны, задача засчитается. Проверить себя можно, запустив саму программу в примере выше или в консоли браузера.

Программа (только чтение)
console.log(10 + 5 * 2);
console.log((10 + 5) * 2);
console.log("10" + 5);
console.log("10" - 5);
console.log("Скидка:", 100 / 4, "%");
Ваши прогнозы · Ctrl + Enter
console.log("???");
console.log("???");
console.log("???");
console.log("???");
console.log("???");
Ожидаемый результат
20
30
105
5
Скидка: 25 %
Подсказка 1

Третья и четвёртая строки — главные «ловушки». Знак + рядом с текстом склеивает, а знак - работает только с числами и превращает текст "10" в число.

Подсказка 2

"10" + 5 даёт 105 (склейка, как «MakeFirstStep» + «2026»). "10" - 5 даёт 5 (вычитание). В последней строке три значения через запятую — вывод через пробел.

ЗАДАЧА 3.11

Предскажи вывод: сложение или склейка

сложная

Те же правила, но хитрее. Определите вывод в уме, впишите прогнозы по одному console.log на строку и проверьте. Почему так происходит, подробно разберём на уроке 2; сегодня достаточно понять закономерность — JavaScript выполняет действия слева направо.

Программа (только чтение)
console.log("2" + "2");
console.log(2 + 2 + "2");
console.log("2" + 2 + 2);
console.log("5" * "4");
console.log("три" * 2);
Ваши прогнозы · Ctrl + Enter
console.log("???");
console.log("???");
console.log("???");
console.log("???");
console.log("???");
Ожидаемый результат
22
42
222
20
NaN
Подсказка 1

Идите слева направо, по одному действию. Пока оба значения числа — + складывает, как только в паре встречается текст — склеивает.

Подсказка 2

2 + 2 + "2": сначала 2 + 2 = 4, потом 4 + "2" = "42". "2" + 2 + 2: сразу склейка — "22", потом "222". Умножение превращает текст в число, а слово «три» числом стать не может — получается NaN («не число»).

04 DevTools: инструменты разработчика

Консоль — одна из вкладок большой панели DevTools (Developer Tools, «инструменты разработчика»). Она встроена в каждый браузер и бесплатна. Профессиональные фронтендеры открывают её каждый день: смотрят, как устроена страница, ищут ошибки, проверяют скорость и сетевые запросы. Мы сегодня познакомимся с тремя вкладками: Elements, Console, Sources.

Как открыть

ДействиеWindowsmacOS
Открыть DevToolsF12 или Ctrl + Shift + ICmd + Option + I
Сразу в консольCtrl + Shift + JCmd + Option + J
Показать элемент в ElementsПКМ по элементу → «Просмотреть код»ПКМ по элементу → «Просмотреть код» (или Ctrl + клик)
Режим мобильного экранаCtrl + Shift + MCmd + Shift + M
Обновить без кэшаCtrl + Shift + RCmd + Shift + R

Панель можно закрепить снизу, справа или вынести в отдельное окно: кнопка с тремя точками ⋮ в правом верхнем углу DevTools → «Dock side». Для работы с кодом удобно закрепить справа или снизу.

Вкладка Elements: живая страница

Вы уже видели её, когда разбирались с CSS. Слева — дерево HTML, справа — стили выбранного элемента. Но теперь у неё появляется новый смысл: это то, что реально лежит на странице в данный момент, а не то, что было в файле. Когда JavaScript меняет страницу, вы увидите изменения именно здесь.

  • Двойной клик по тексту — меняете его прямо на странице. Двойной клик по атрибуту или значению стиля — тоже.
  • Галочки рядом со стилями включают и выключают свойства — удобно искать, какое правило ломает вёрстку.
  • Изменения живут до перезагрузки. Файл на диске не меняется — это «репетиция» на копии страницы.

Вкладка Console: сообщения и команды

Всё, что вы выводите через console.log, и все красные ошибки появляются здесь. Рядом с каждым сообщением справа — имя файла и номер строки: клик по ссылке открывает эту строку во вкладке Sources. Значок 🚫 слева очищает консоль, а выпадающий список «Default levels» фильтрует сообщения: например, можно показать только ошибки.

Вкладка Sources: файлы и точки останова

Слева дерево файлов сайта: index.html, style.css, script.js. Откройте script.js — в середине вы увидите свой код. Поиск файла по имени: Ctrl/Cmd + P.

Главная фишка вкладки — точка останова (breakpoint). Кликните по номеру строки — появится синий маркер. Перезагрузите страницу: браузер дойдёт до этой строки и поставит выполнение на паузу. Теперь можно рассмотреть, что уже произошло, и идти дальше по одной команде.

Кнопка / клавишаЧто делает
▶ Resume · F8Снять паузу и выполнять код дальше до следующей точки останова
Step over · F10Выполнить одну строку и остановиться на следующей
Step into · F11Зайти «внутрь» вызова функции (пригодится на уроке 5)
Аналогия из жизни

Обычный запуск программы — как фильм, который идёт без остановок. Точка останова — кнопка «пауза»: можно остановить кадр и рассмотреть всё, что на нём происходит. Step over — «следующий кадр». Именно так опытные разработчики ищут ошибки: не гадают, а смотрят кадр за кадром.

Другие вкладки (знать, что они есть)

  • Network — все запросы страницы: файлы, картинки, данные. Здесь мы увидим, как загружаются API на уроках 14–16, а сегодня пригодится, чтобы проверить, что script.js действительно скачался (статус 200, а не 404).
  • Application — здесь живёт localStorage (урок 11).
  • Lighthouse — автоматическая оценка скорости и доступности страницы.
Совет

Если вы запутались — нажмите Ctrl/Cmd + Shift + R: обновление страницы без старого кэша решает большинство загадок «я же поменял, а ничего не изменилось».

Читать подробнее: learn.javascript.ru — Консоль разработчика · Chrome DevTools — документация

Практика: закрепляем

Первая задача — прочитать сообщение об ошибке, вторая — «экскурсия» по DevTools на вашем компьютере.

ЗАДАЧА 4.1

Читаем сообщение об ошибке

лёгкая

Запустите код и прочитайте сообщение под красной строкой: что именно JavaScript «не знает» и на какой он остановился строке? Исправьте код так, чтобы вывелись все три строки.

Можно редактировать · Ctrl + Enter
console.log("Начало");
console.log(Привет);
console.log("Конец");
Ожидаемый результат
Начало
Привет
Конец
Подсказка 1

Ошибка называется ReferenceError: слово Привет без кавычек JavaScript принимает за имя команды, а такого имени не существует.

Подсказка 2

Текст в console.log нужно взять в кавычки: console.log("Привет");.

ЗАДАЧА 4.2

Экскурсия по DevTools

лёгкая

Эта задача выполняется вне страницы (на странице автопроверки нет), поэтому отметьте её вручную. Откройте любой сайт (например, сайт вашей академии) и сделайте по порядку:

  1. Откройте DevTools и закрепите панель справа, затем снизу.
  2. Во вкладке Elements найдите главный заголовок страницы, двойным кликом измените его текст. Обновите страницу — что стало с изменением?
  3. Во вкладке Console наберите 2 ** 10 и нажмите Enter, затем "Салом, " + "мир". Нажмите стрелку ↑ — что появилось?
  4. Во вкладке Console введите console.log("Я здесь!") и найдите ссылку на строку справа от сообщения.
  5. Во вкладке Network обновите страницу и найдите самый большой по размеру файл.
Подсказка 1

Нет под рукой DevTools? Проверьте сочетания клавиш в таблице выше. На некоторых ноутбуках клавиши F1–F12 работают только вместе с Fn.

Подсказка 2

Изменения в Elements не сохраняются — после обновления страницы всё вернётся на место. Это нормально: вы меняли копию в памяти браузера.

05 Окна: alert, prompt, confirm

Консоль видна только разработчику. Но иногда нужно поговорить с пользователем: показать сообщение, спросить имя, получить «да» или «нет». У браузера для этого есть три встроенных окна. Они «модальные»: пока окно открыто, страница заморожена, и ничего другого нажать нельзя.

Запускать эти примеры придётся у себя

Код на этой странице работает внутри изолированной «песочницы» браузера, и она запрещает модальные окна: alert, prompt и confirm здесь просто игнорируются. Поэтому следующие блоки — только для чтения. Скопируйте их в свой script.js (после настройки среды в разделе 6) и попробуйте на своей странице.

alert — показать сообщение

Только чтение · попробуйте на своей странице
alert("Салом, MakeFirstStep!");

Окно с текстом и одной кнопкой «OK». Ничего не возвращает: просто показывает и ждёт.

prompt — спросить у пользователя

Только чтение · попробуйте на своей странице
prompt("Как вас зовут?");                // окно с полем ввода
prompt("В каком вы городе?", "Душанбе"); // второй аргумент — значение по умолчанию

Показывает окно с полем ввода и кнопками «OK» и «Отмена». Что вернёт prompt:

  • если нажали OK — то, что ввели, всегда как строку (даже если вы набрали число);
  • если нажали «Отмена» или Esc — специальное значение null («ничего»).

confirm — спросить «да или нет»

Только чтение · попробуйте на своей странице
confirm("Вы точно хотите удалить заказ?");

Окно с вопросом и кнопками «OK» и «Отмена». Возвращает true («да»), если нажали OK, и false («нет»), если «Отмена». Что делать с этим ответом — выбирать, когда мы научимся условиям (урок 3).

Используем ответ сразу, без переменных

Переменных мы пока не знаем (это урок 2), но ответ prompt уже можно использовать — вставив один вызов внутрь другого. Сначала JavaScript выполняет то, что внутри скобок, а потом использует результат.

Только чтение · попробуйте на своей странице
alert("Салом, " + prompt("Как вас зовут?") + "!");
  1. Выполняется внутренний вызов: открывается окно «Как вас зовут?», вы вводите «Мадина».
  2. prompt возвращает строку "Мадина".
  3. Склеивается "Салом, " + "Мадина" + "!".
  4. Внешний alert показывает Салом, Мадина!.

Ловушка: prompt возвращает строку

Если спросить у пользователя два числа и сложить ответы знаком +, получится склейка, а не сумма: "7" + "5" даёт "75". Чтобы превратить строку в число, используйте функцию Number(...). Эту «ловушку» можно проверить даже здесь, без окон — подставим вместо ответов пользователя готовые строки:

Что вернул бы prompt, если ввели 7 и 5 · Ctrl + Enter
console.log("7" + "5");                    // склейка строк
console.log(Number("7") + Number("5"));    // превратили в числа и сложили
Только чтение · сумма двух чисел на своей странице
alert(Number(prompt("Первое число")) + Number(prompt("Второе число")));
Аналогия из жизни

Это как анкета в банке: вы пишете цифры от руки, а оператор вводит их в компьютер. Пока цифры только на бумаге (в строке), считать с ними нельзя. Сначала нужно «ввести» (Number(...)), а потом складывать.

Почему в настоящих проектах это почти не используют
  • Окна блокируют всю страницу, выглядят одинаково на всех сайтах и пугают пользователя.
  • Их нельзя оформить в стилях сайта: красить, анимировать, перетаскивать.
  • Браузер позволяет пользователю включить «Не показывать больше диалоги», после чего код тихо перестаёт работать.
  • Вместо них на сайтах используют формы, модальные окна из HTML и уведомления — этому мы научимся в модулях 2 и 3.

Зато для обучения и быстрой проверки идей alert и prompt идеальны: ничего не нужно верстать.

Читать подробнее: learn.javascript.ru — alert, prompt, confirm

Практика: закрепляем

Две задачи — на строки и числа так, как их возвращает prompt, и одна — на вашей странице.

ЗАДАЧА 5.1

Сумма вместо склейки

лёгкая

Пользователь ввёл в prompt числа «7» и «5» (они пришли строками). Исправьте код, чтобы вместо 75 выводилась сумма.

Можно редактировать · Ctrl + Enter
console.log("7" + "5");
Ожидаемый результат
12
Подсказка 1

Прежде чем складывать, каждую строку нужно превратить в число функцией Number(...).

Подсказка 2

console.log(Number("7") + Number("5"));

ЗАДАЧА 5.2

Скидка в магазине

средняя

Покупатель ввёл цену «200» и скидку «15» (проценты) — оба значения пришли строками. Выведите цену со скидкой: от цены вычтите цена * скидка / 100. Формула в одну строку, числа берите из строк через Number.

Можно редактировать · Ctrl + Enter
// цена "200", скидка "15" — обе строки
// цена - цена * скидка / 100
Ожидаемый результат
170
Подсказка 1

Цена встречается в формуле дважды, скидка — один раз. Превращайте в число каждое вхождение строки: Number("200").

Подсказка 2

console.log(Number("200") - Number("200") * Number("15") / 100);. Умножение и деление идут раньше вычитания: 200 * 15 / 100 = 30, итого 170.

ЗАДАЧА 5.3

Диалоги на своей странице

средняя

Задача выполняется на вашем компьютере (здесь модальные окна заблокированы), поэтому отметьте её вручную, когда всё заработает. В вашем script.js напишите:

  1. alert с приветствием вашей группы;
  2. приветствие по имени: alert("Салом, " + prompt("Как вас зовут?") + "!");
  3. калькулятор суммы двух чисел из раздела выше;
  4. console.log(confirm("Вы любите плов?")); — нажмите «OK», затем обновите страницу и нажмите «Отмена». Какие значения увидели в консоли?
  5. Нажмите «Отмена» в окне prompt из пункта 2. Что показало приветствие?
Подсказка 1

Если окна не появляются, откройте консоль: возможно, вы опечатались, и там красная строка. Или браузер заблокировал окна — обновите страницу.

Подсказка 2

В пункте 5 приветствие будет «Салом, null!»: prompt вернул null, а склейка превратила его в слово. Как с этим бороться, узнаем на уроке про условия.

06 Настройка среды: VS Code, расширения, Live Server, Copilot

Писать код можно и в блокноте, но профессионалы используют редактор кода: он подсвечивает синтаксис, подсказывает команды и сразу показывает опечатки. На курсе мы работаем в Visual Studio Code (VS Code) — это бесплатный редактор, на котором сегодня пишет большинство фронтендеров мира.

Аналогия из жизни

Блокнот — это кухонный нож: резать можно, но медленно. VS Code с расширениями — кухонный комбайн. Но руки остаются вашими: если не умеете готовить, комбайн приготовит быстро, но невкусно. Поэтому сначала учимся сами, потом ускоряем себя инструментами.

Шаг 1. Установка VS Code

Windows 10 / 11macOS
  1. Откройте code.visualstudio.com/download и скачайте User Installer (64-bit).
  2. Запустите файл. Примите соглашение.
  3. На шаге «Select Additional Tasks» включите: «Add "Open with Code" action to Windows Explorer file context menu» и «Add to PATH».
  4. Нажмите Install, затем Finish.
  1. Откройте code.visualstudio.com/download и скачайте версию для Mac (Universal или Apple Silicon — для M1 и новее).
  2. Откройте скачанный архив — появится приложение Visual Studio Code.
  3. Перетащите его в папку «Программы» (Applications), иначе будут проблемы с обновлением.
  4. Запустите из Launchpad. Если macOS спросит «открыть программу, скачанную из интернета?» — нажмите «Открыть».
  5. В VS Code нажмите Cmd + Shift + P, введите shell command и выберите «Install 'code' command in PATH».

Чтобы интерфейс был на русском, откройте Ctrl/Cmd + Shift + X, найдите «Russian Language Pack for Visual Studio Code» и установите. Однако документация и подсказки в основном на английском, поэтому многие оставляют английский интерфейс.

Шаг 2. Рабочая папка

  1. Создайте на диске папку для курса, например mfs-js. На Windows лучше путь без кириллицы и пробелов: C:\dev\mfs-js. На Mac — в домашней папке: ~/dev/mfs-js.
  2. Внутри создайте папку lesson-01.
  3. В VS Code: File → Open Folder… и выберите папку mfs-js. На вопрос «Do you trust the authors?» ответьте «Yes, I trust the authors».
  4. Слева в панели Explorer появится папка. Теперь можно создавать файлы: наведите мышь на название папки, нажмите значок «New File».
Совет

Откройте папку проекта, а не отдельный файл — тогда VS Code видит все файлы, Live Server находит их, а ИИ-помощник понимает, над чем вы работаете. Открывать папку каждый раз можно и командой в терминале: code . (точка — «эта папка»).

Шаг 3. Расширения

Расширения ставятся в левой панели Extensions (иконка из четырёх кубиков) — Ctrl/Cmd + Shift + X. Введите название, выберите расширение от нужного автора, нажмите Install.

РасширениеЗачемОбязательно?
Live Server (Ritwick Dey)Запускает страницу в браузере и обновляет её при каждом сохранении файлаДа
Prettier — Code formatterАвтоматически выравнивает код: отступы, кавычки, пробелыДа
GitHub CopilotИИ-помощник в редакторе (подробнее ниже). Чат Copilot установится вместе с ним или отдельным расширением «GitHub Copilot Chat»Да, по правилам курса
Error LensПоказывает ошибки прямо на строке с кодом, не нужно наводить мышьРекомендуем
Auto Rename TagМеняете открывающий HTML-тег — закрывающий меняется самРекомендуем
Path IntellisenseПодсказывает имена файлов в src и href — меньше опечаток в путяхРекомендуем

Шаг 4. Настройки, которые экономят время

Откройте настройки: Ctrl + , (Windows) или Cmd + , (Mac). В строке поиска найдите и включите:

  • Files: Auto Save → afterDelay: файл сохраняется сам, и вы никогда не забудете нажать Ctrl/Cmd + S (а вопрос «почему ничего не изменилось» возникает намного реже).
  • Editor: Format On Save → включить, а в Editor: Default Formatter выбрать Prettier: код выравнивается при каждом сохранении.
  • Editor: Font Size → 16–18: на проекторе и для глаз удобнее.
  • Editor: Word Wrap → on: длинные строки переносятся.

Полезные сочетания клавиш

ДействиеWindowsmacOS
Командная палитра (все команды)Ctrl + Shift + PCmd + Shift + P
Быстро открыть файл по имениCtrl + PCmd + P
Закомментировать строкуCtrl + /Cmd + /
Переместить строку вверх/внизAlt + ↑/↓Option + ↑/↓
Дублировать строкуShift + Alt + ↓Shift + Option + ↓
Выделить следующее такое же словоCtrl + DCmd + D
Терминал внутри VS CodeCtrl + `Ctrl + `
Скрыть/показать боковую панельCtrl + BCmd + B

А ещё в пустом HTML-файле наберите ! и нажмите Tab — VS Code сам напишет весь каркас страницы. Это встроенный помощник Emmet.

Шаг 5. GitHub Copilot

GitHub Copilot — ИИ-помощник прямо в редакторе. Он предлагает продолжение кода и отвечает на вопросы в чате. Что нужно для запуска:

  1. Аккаунт GitHub. Он у вас уже есть — вы работали с Git. Если нет — зарегистрируйтесь на github.com.
  2. Тариф. Для курса достаточно бесплатного тарифа Copilot Free (есть ежемесячные лимиты на подсказки и сообщения чата). Студенты школ и вузов могут оформить GitHub Student Developer Pack и получить расширенный Copilot бесплатно на время обучения. Заявка подаётся на education.github.com/pack: нужен подтверждённый статус студента (учебная почта или документ). Рассматривают её от нескольких дней до пары недель, поэтому подайте заявку сегодня, а пока работайте на бесплатном тарифе. Условия и лимиты периодически меняются — актуальные смотрите на сайте.
  3. Вход из VS Code. Установите расширение GitHub Copilot, нажмите иконку аккаунта внизу слева (или значок Copilot в нижней строке состояния) → Sign in with GitHub → браузер попросит подтвердить вход.
  4. Проверка. В новом файле script.js напишите комментарий // выведи в консоль приветствие и нажмите Enter. Серым текстом появится подсказка: Tab принимает её, Esc отклоняет.
Правило курса про Copilot

Copilot включается на практике и выключается на контрольных работах (уроки 6 и 18). Чтобы отключить автодополнение, нажмите значок Copilot в нижней строке состояния и выберите отключение подсказок (Snooze или Disable Completions). Не нажимайте Tab «на автомате»: сначала прочитайте предложение — понимаете ли вы каждую строку?

Шаг 6. Первый скрипт и Live Server

Теперь всё готово. В папке lesson-01 создайте два файла.

Только чтение · lesson-01/index.html
<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Мой первый скрипт</title>
  <script src="script.js" defer></script>
</head>
<body>
  <h1>Салом, JavaScript!</h1>
  <p>Откройте консоль: F12 или Cmd+Option+I</p>
</body>
</html>
Только чтение · lesson-01/script.js
console.log("Салом, JavaScript!");
console.log("Мой первый скрипт работает");
  1. Сохраните оба файла (если включён Auto Save — это произойдёт само).
  2. Нажмите правой кнопкой на index.html в Explorer → Open with Live Server. Или нажмите кнопку Go Live в правом нижнем углу VS Code.
  3. В браузере откроется адрес вида http://127.0.0.1:5500/lesson-01/index.html.
  4. Откройте DevTools (F12 или Cmd + Option + I) → вкладка Console. Там должны быть две ваши строки, справа — script.js:1 и script.js:2.
  5. Измените текст в script.js, сохраните — страница обновится сама. Это и есть Live Server.
  6. Чтобы остановить сервер, нажмите на кнопку Port: 5500 в нижней строке.

Если в консоли пусто или красная ошибка — вернитесь к списку «Частые ошибки при подключении» в разделе 2. В 9 из 10 случаев причина в нём.

Git: первый коммит (по желанию)

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

Терминал · в папке mfs-js
git init
git add .
git commit -m "add lesson 01: first script"

Читать подробнее: learn.javascript.ru — Редакторы кода · VS Code — скачать · Live Server

Практика: закрепляем

ЗАДАЧА 6.1

Окружение готово

лёгкая

Эта задача выполняется на вашем компьютере (проверить установку из браузера нельзя), поэтому отметьте её вручную, когда всё готово. Пройдите чек-лист и каждый пункт проверьте глазами:

  • ☐ VS Code установлен и открывает папку mfs-js (в Explorer слева видна папка lesson-01).
  • ☐ Установлены Live Server, Prettier, GitHub Copilot (внизу справа виден значок Copilot).
  • ☐ Auto Save и Format On Save включены.
  • ☐ Вход в GitHub из VS Code выполнен, подсказка Copilot появляется после комментария и принимается клавишей Tab.
  • ☐ Live Server открывает index.html, а в Console видны две строки из script.js.
  • ☐ Заявка на GitHub Student Pack подана (или вы знаете, почему не подходите, и работаете на Copilot Free).
Подсказка 1

Что-то не получается? Выделите проблему: не открывается Live Server, нет значка Copilot, пустая консоль — и найдите соответствующий шаг выше. В чате группы приложите скриншот и текст ошибки.

Подсказка 2

Пустая консоль чаще всего означает неверный путь в src или несохранённый файл. Откройте вкладку Network в DevTools и проверьте: есть ли там script.js со статусом 200?

07 ИИ-блок: карта инструментов и правила курса

ИИ-подсказка

ИИ — самый быстрый способ получить похожий на правду ответ. Не обязательно правильный. Поэтому весь курс построен на одной привычке: ИИ предлагает — вы запускаете, читаете и объясняете. Сегодня разберёмся, какие бывают ИИ-инструменты, и договоримся о правилах.

Три типа ИИ-инструментов

ЧатАвтодополнениеАгент
ПримерыChatGPT, Claude, GeminiGitHub Copilot (подсказки при наборе, inline chat)Cursor, Claude Code, Copilot в режиме агента
Как работаетВы пишете вопрос в окне — получаете ответВы печатаете в редакторе — ИИ серым текстом предлагает продолжение, Tab принимаетВы ставите цель — он сам читает проект, правит несколько файлов, запускает команды и проверяет результат
Что умеетОбъяснять, придумывать задачи, разбирать ошибки, предлагать план, проверять идеиБыстро дописывать типовой код, подставлять имена, повторять ваш стильБольшие задачи «под ключ»: создать проект, поправить много файлов, написать и прогнать тесты
ВидитТолько то, что вы вставили в окноОткрытые файлы и код рядом с курсоромВесь проект и результат запуска команд
Где ошибаетсяВыдумывает несуществующие методы и «факты», уверенно утверждает неверный вывод кода, не видит ваш проектПодсказывает правдоподобную строку, которую вы нажимаете Tab «на автомате»; повторяет вашу же опечатку; не объясняетДелает больше, чем просили; переписывает рабочий код; принимает неверные допущения; результат трудно проверить, пока вы не умеете читать код
Когда намС первого урока — основной инструментС первого урока на практике, выключаем на контрольныхТолько демо преподавателя: Cursor (урок 16) и Claude Code (урок 17)
Аналогия из жизни

Чат — как консультант в магазине: расскажет и посоветует, но не покупает за вас. Автодополнение — как подсказки такси-навигатора: быстро, но если слепо следовать им, можно заехать в тупик. Агент — как водитель, которому вы дали адрес: довезёт, но если вы сами дорогу не знаете, не заметите, что он поехал странным маршрутом.

Где ИИ ошибается в JavaScript чаще всего

  • Выдумывает команды. Предлагает метод или функцию, которых нет в JavaScript (например, console.print), — звучит убедительно, а в консоли красная ошибка.
  • Путает языки. Подсовывает конструкции из Python или другого языка, потому что «похоже».
  • Неверно предсказывает вывод. Уверенно пишет «этот код выведет 4», а он выводит 22. ИИ не запускает ваш код — он угадывает.
  • Решает не ту задачу. Вы просили одно, а он решил похожее, да ещё добавил лишнее.
  • Использует устаревшие приёмы или слишком сложные решения, которые вы не сможете объяснить.

Проверьте сами: ИИ-ассистент мог бы сказать «"2" + 2 даст 4». Запустите и убедитесь, кто прав — консоль или ИИ:

Консоль знает лучше · Ctrl + Enter
console.log("2" + 2);   // ИИ мог бы уверенно ответить: 4
console.log(2 + 2);     // а это уже правда 4

Вывод: консоль — последняя инстанция. Любой ответ ИИ про код проверяется запуском.

Правила работы с ИИ на курсе

  1. Сначала пробуешь сам 15 минут — только потом спрашиваешь ИИ.
  2. Не вставляешь код, который не можешь объяснить строчку за строчкой.
  3. На проверке ДЗ преподаватель может попросить объяснить любую строку.
  4. Промпт всегда содержит: контекст, задачу, ограничения и нужный формат ответа.
  5. ИИ пишет черновик — ты проверяешь логику, имена и крайние случаи.
  6. Copilot включаем на практике и выключаем на контрольных заданиях.
  7. Контрольные на уроках 6 и 18 выполняются полностью без ИИ.

Формула промпта

ЭлементЧто писать
1. КонтекстПроект, язык, ваш уровень: «Я учусь JavaScript, это урок 1, пишу в VS Code»
2. ЗадачаОдно конкретное действие: «Объясни, почему в консоли ошибка»
3. ОграниченияЧто нельзя и что обязательно: «Не переписывай весь код, только покажи строку с ошибкой»
4. Формат ответаКак оформить: «Сначала причина одним предложением, потом исправленная строка»
5. ПроверкаЧто попросить дополнительно: «Назови ещё две частые причины такой ошибки»
не работает код, почини
Контекст: я новичок, учусь JavaScript (урок 1), пишу в VS Code и запускаю страницу через Live Server. Код лежит в script.js. Задача: объясни, почему в консоли браузера красная ошибка, и как её исправить. Код: console.log("Салом, мир); Ошибка из консоли: Uncaught SyntaxError: Invalid or unexpected token (script.js:1) Ограничения: не переписывай весь код и не добавляй ничего нового, только объясни и покажи исправленную строку. Формат ответа: 1) причина одним предложением, 2) исправленная строка, 3) как в следующий раз найти такую ошибку самому. Проверка: назови две другие частые причины, из-за которых скрипт «ничего не делает».

Из библиотеки промптов курса для первых уроков пригодится шаблон «Не понимаю, почему код ведёт себя странно»: «Вот код: [код]. Объясни построчно, что происходит и почему результат такой. Не переписывай код — только объясни.». Всегда проверяйте: совпадает ли объяснение с тем, что реально выводит консоль.

Чего не делаем на курсе
  • Не просим «сделай ДЗ за меня» и не сдаём код, который не можем объяснить.
  • Не вставляем в чат пароли, ключи и личные данные.
  • Не принимаем Tab от Copilot, не прочитав подсказку.
  • Не доверяем ИИ в вопросе «что выведет этот код» — запускаем и смотрим.

Практика: закрепляем

Учимся находить ошибки в «ответах ИИ» и составлять собственные промпты.

ЗАДАЧА 7.1

Ответ ИИ с багом

средняя

Вы попросили ИИ: «Выведи первые три строки таблицы умножения на 3». Он уверенно ответил кодом ниже. Запустите его, сравните с ожидаемым результатом и найдите ошибку.

Ответ ИИ · Ctrl + Enter
console.log("3 x 1 =", 3 * 1);
console.log("3 x 2 =", 3 + 2);
console.log("3 x 3 =", 3 * 3);
Ожидаемый результат
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
Подсказка 1

Сверьте результат каждой строки с таблицей умножения. Где результат не совпал?

Подсказка 2

Во второй строке стоит знак сложения вместо умножения: 3 + 2 даёт 5. Должно быть 3 * 2.

ЗАДАЧА 7.2

Промпт по формуле

средняя

Эта задача требует ИИ-чата, поэтому здесь нет автопроверки — отметьте её вручную. Возьмите любую ошибку из задач 3.6–3.7 (в исходном, сломанном виде). Составьте промпт по формуле из пяти частей (контекст → задача → ограничения → формат → проверка) и отправьте в ChatGPT, Claude или Gemini.

  1. Сначала потратьте 15 минут и попробуйте исправить сами (правило №1).
  2. Сохраните промпт в файл prompts.md в папке lesson-01.
  3. Сравните ответ ИИ с тем, что вы поняли сами. Ответ верен? Запустите исправленный код.
  4. Допишите в файл две строки: что ИИ объяснил хорошо, где ошибся или не помог.
Подсказка 1

Используйте хороший промпт из примера выше как шаблон: замените код и текст ошибки на свои.

Подсказка 2

Не получилось одним промптом? Уточните ограничения («не переписывай весь код») и формат («объясни как новичку, без терминов») — и спросите ещё раз.

ЗАДАЧА 7.3

Ревью ответа ИИ: четыре ошибки

сложная

Вы попросили ИИ: «Выведи счёт за 3 чая по 4 сомони и 2 самбусы по 5 сомони, и итог». ИИ ответил «Готово, всё проверено» и выдал код ниже. В нём четыре ошибки разного рода: опечатка, неверный знак, пропущенный разделитель и число, посчитанное вручную неправильно. Исправьте код так, чтобы он выводил верный счёт.

Ответ ИИ · Ctrl + Enter
console.log("Чай:", 3 * 4);
console.log("Самбуса:", 2 + 5);
console.log("Итого:" 12 + 10);
consol.warn("Спасибо за заказ!");
Ожидаемый результат
Чай: 12
Самбуса: 10
Итого: 22
Спасибо за заказ!
Подсказка 1

Исправляйте по одной ошибке: запустили, прочитали красное сообщение, исправили. Сначала остановит синтаксическая ошибка (потерялась запятая), затем — опечатка в слове console.

Подсказка 2

Самбуса: 2 штуки по 5 сомони — это 2 * 5. Итог — 3 * 4 + 2 * 5 (12 + 10 = 22). Между подписью "Итого:" и числом нужна запятая.

08 Практика на уроке: окружение и первый скрипт

Это сердце урока: вы своими руками собираете рабочее место и запускаете первую программу. Идите по шагам, не перескакивая. Если что-то не получается — поднимите руку или напишите в чат группы: вместе исправим.

ВремяЧто делаем
0–20 минУстановка VS Code, расширений, вход в GitHub
20–40 минПапка проекта, index.html, script.js, Live Server
40–55 минКонсоль и DevTools: log, warn, error, table, ошибки
55–70 минCopilot и чат: пробуем, проверяем, обсуждаем
70–90 минЗадачи 8.1–8.3 и обсуждение домашнего задания

Шаг за шагом

  1. Установите VS Code и расширения из раздела 6. Проверьте: Live Server и Prettier видны в списке установленных.
  2. Создайте папку mfs-js/lesson-01 и откройте mfs-js в VS Code.
  3. Создайте index.html: в пустом файле наберите ! и нажмите Tab. Исправьте lang на ru, title на «Мой первый скрипт».
  4. Создайте script.js и подключите его в <head>: <script src="script.js" defer></script>.
  5. Напишите в script.js код из примера ниже.
  6. Запустите Live Server и откройте консоль браузера. Найдите все шесть сообщений, сравните цвета.
  7. Поставьте точку останова на строке console.warn во вкладке Sources, обновите страницу, пройдите дальше клавишей F10.
  8. Специально сломайте код: удалите закрывающую кавычку в одной строке. Найдите красную ошибку в консоли и подсветку в VS Code (если установлен Error Lens). Верните как было.
  9. Проверьте Copilot: на новой строке напишите комментарий // выведи в консоль название любимого блюда и посмотрите подсказку. Прочитайте её, прежде чем принять. Понятна ли каждая часть?
  10. Сделайте первый коммит (по желанию), чтобы закрепить привычку.
Только чтение · lesson-01/script.js
console.log("Имя: Мадина");
console.log("Город: Душанбе");
console.log("Курс: Frontend + AI");
console.warn("Предупреждение: это учебный проект");
console.error("Ошибка: просто проба красного цвета");
console.table(["HTML", "CSS", "JavaScript"]);

Мини-страница для экспериментов

Пока не настроили среду на своём компьютере, или чтобы быстро проверить идею, — используйте эту мини-страницу: слева код index.html и script.js, снизу превью и консоль. Это тот же принцип, что и в VS Code с Live Server.

Первая страница · Ctrl + Enter
<h1>Салом, JavaScript!</h1>
<p>Откройте консоль: там уже есть сообщения.</p>
Предпросмотр
Нажмите «Запустить», чтобы увидеть результат.

Практика: закрепляем

Три задачи на всё, что вы узнали сегодня: скрипт на странице, вывод разных значений и вычисления.

ЗАДАЧА 8.1

Скрипт для моей страницы

лёгкая

В мини-странице ниже в script.js только комментарий. Допишите два console.log: Привет из script.js и Урок 1 пройден.

Мой скрипт · Ctrl + Enter
<h1>Мой первый сайт</h1>
<p>Результат смотрите в консоли.</p>
Предпросмотр
Нажмите «Запустить», чтобы увидеть результат.
Ожидаемый результат
Привет из script.js
Урок 1 пройден
Подсказка 1

Перейдите на вкладку script.js, удалите комментарий или просто добавьте строки под ним.

Подсказка 2

Две команды: console.log("Привет из script.js"); и console.log("Урок 1 пройден");.

ЗАДАЧА 8.2

Анкета студента

средняя

Выведите анкету из четырёх строк. Год рождения — 2005, а возраст пусть посчитает JavaScript: 2026 - 2005. В строке возраста используйте два значения через запятую.

Можно редактировать · Ctrl + Enter
// Имя: Мадина
// Год рождения: 2005
// Возраст: 21
// Курс: Frontend + AI
Ожидаемый результат
Имя: Мадина
Год рождения: 2005
Возраст: 21
Курс: Frontend + AI
Подсказка 1

Четыре команды console.log. В двух из них вы выводите подпись и значение через запятую.

Подсказка 2

console.log("Возраст:", 2026 - 2005); — JavaScript сам вычтет и выведет 21.

ЗАДАЧА 8.3

Плов на всех

сложная

На праздник придут 15 гостей. На одного гостя нужно 100 граммов риса, а в мешке 2 килограмма (1 кг = 1000 г). Выведите четыре строки; все числа, кроме исходных (15, 100, 2, 1000), должен посчитать JavaScript:

  • Гостей: 15
  • сколько граммов риса нужно (подпись Риса нужно, г:);
  • то же в килограммах (подпись Риса нужно, кг:);
  • сколько килограммов останется в мешке (подпись Останется из мешка 2 кг:).
Можно редактировать · Ctrl + Enter
// 15 гостей, 100 г на гостя, мешок 2 кг
Ожидаемый результат
Гостей: 15
Риса нужно, г: 1500
Риса нужно, кг: 1.5
Останется из мешка 2 кг: 0.5
Подсказка 1

Граммы — 15 * 100. Килограммы — граммы, поделённые на 1000. Остаток — 2 минус эти килограммы.

Подсказка 2

console.log("Риса нужно, кг:", 15 * 100 / 1000); и console.log("Останется из мешка 2 кг:", 2 - 15 * 100 / 1000);

★ Домашнее задание: окружение и 5 задач

Закончите настройку среды, пришлите подтверждение и решите пять небольших задач на console.log, alert и prompt. Всё делайте в папке lesson-01 на своём компьютере, а для задач — отдельный файл tasks.js, подключённый к index.html после script.js. Переменные не нужны: используйте только значения, записанные прямо в коде.

Часть 1. Рабочее окружение (скриншоты)

  • ☐ VS Code установлен, открыта папка mfs-js, видны lesson-01/index.html и script.js.
  • ☐ Установлены Live Server, Prettier и GitHub Copilot, включены Auto Save и Format On Save.
  • ☐ Вход в GitHub из VS Code выполнен, Copilot показывает подсказки.
  • ☐ Live Server открывает страницу, во вкладке Console видны ваши сообщения.
  • ☐ Заявка на GitHub Student Pack отправлена (скриншот письма или страницы статуса) — или вы объяснили, почему не подходите.

Один скриншот должен показывать всё сразу: окно VS Code с открытым script.js и боковой панелью, рядом — браузер со страницей и открытой консолью с вашими сообщениями. Лучше два скриншота: отдельно VS Code (со значком Copilot) и отдельно браузер.

Часть 2. Пять задач

  1. Визитка (console.log). Выведите пять строк: имя, город, год рождения, курс, любимое блюдо. В строке возраста посчитайте возраст выражением: 2026 - ваш_год_рождения (число подставьте сами).
  2. Счёт в магазине (console.log с несколькими значениями). Три товара с ценой и количеством. В каждой строке: название, количество, знак = и сумма, посчитанная выражением. В конце — итог, тоже вычисленный. Одна строка — один console.log с несколькими значениями через запятую.
  3. Приветствие (alert). Покажите alert с приветствием группы, затем второй alert с текстом из двух строк (перенос строки — символ \n внутри текста).
  4. Знакомство (prompt + alert). Спросите имя и город двумя prompt и покажите одним alert: Салом, Имя из Город!. Подсказка: два prompt можно вставить в одну склейку строк.
  5. Площадь (prompt + Number + confirm). Спросите длину и ширину прямоугольника двумя prompt, превратите ответы в числа через Number и покажите площадь через alert. Затем спросите confirm("Показать периметр?") и выведите ответ (true или false) через console.log. Периметр показывать не нужно, условия мы ещё не учили.

Бонус (по желанию, без баллов): выведите любую строку тремя способами — console.log, console.warn, console.error — и сделайте скриншот того, как они выглядят в настоящей консоли. А ещё попробуйте вывести console.table(["самбуса", "курутоб", "чой"]).

Что сдать

  1. Скриншот(ы) рабочего окружения (часть 1).
  2. Ссылка на репозиторий GitHub (папка lesson-01 с index.html, script.js, tasks.js) или архив папки в Telegram-группу.
  3. Если вы использовали ИИ: в файле README.md три строки — что просили, что взяли, что исправили руками. На проверке преподаватель может попросить объяснить любую строку.

Как оцениваем (0–10)

КритерийБаллы
Окружение: VS Code, расширения, Live Server, скриншоты видно и они настоящие2
Copilot подключён и работает (или есть заявка на Student Pack и объяснение)1
Задача 1: визитка, возраст посчитан выражением1
Задача 2: счёт, суммы и итог считает JavaScript1
Задача 3: два alert, перенос строки работает1
Задача 4: два prompt в одном alert, текст сложен правильно1
Задача 5: площадь считается как число (а не склейка строк), confirm выведен в консоль1
Аккуратность: отступы (Prettier), понятные комментарии, никаких лишних строк1
Объяснили любую строку кода на проверке, если просили (и честно описали использование ИИ)1
Подсказка по времени

Закладывайте 1,5–2 часа. Установка занимает больше всего времени, особенно если интернет медленный, — начните с неё. Остальное делайте по одной задаче: написали → сохранили → проверили в браузере → перешли к следующей. Пока отлаживаете одну задачу, закомментируйте остальные (Ctrl/Cmd + /), чтобы окна prompt не появлялись по десять раз. Если застряли: 15 минут сами, потом вопрос в чат группы (с кодом и текстом ошибки), потом ИИ по формуле промпта.

✓ Шпаргалка урока

  • Роли: HTML — что на странице, CSS — как выглядит, JavaScript — что происходит. JS уже встроен в браузер (движок V8 в Chrome и Edge).
  • Как читается код: сверху вниз, строка за строкой. Регистр важен. Ошибка на строке — остальное не выполняется.
  • Подключение: <script src="script.js" defer></script> в <head> — наш стандарт. Закрывающий тег обязателен. Без defer скрипт в <head> запускается раньше страницы. Inline — только для проверок. Если есть src, код внутри тега игнорируется.
  • Пустая консоль? Проверьте путь в src, регистр букв, расширение файла (.js, а не .js.txt), сохранён ли файл, вкладку Network (200 или 404), обновление без кэша: Ctrl/Cmd + Shift + R.
  • Консоль: console.log(...) — несколько значений через запятую выводятся через пробел; warn — предупреждение, error — ошибка, table — таблица. Текст в кавычках, числа без. Арифметика: + - * / % **, скобки, дробная часть — через точку.
  • Ошибки: вид (SyntaxError, ReferenceError) + описание + файл и строка. Читайте красное сообщение, а не гадайте. Типичные причины: опечатка в console/log, регистр, забытая кавычка или скобка, текст без кавычек.
  • Строки и числа: "7" + "5" — это "75", а Number("7") + Number("5") — это 12. + рядом с текстом склеивает, - и * работают с числами.
  • DevTools: F12 / Cmd + Option + I. Elements — живая страница (правки до перезагрузки), Console — сообщения и команды, Sources — файлы и точки останова (F8, F10), Network — загрузка файлов и запросов.
  • Окна: alert(текст) — сообщение; prompt(вопрос) — строка или null; confirm(вопрос) — true/false. Блокируют страницу, в реальных проектах их заменяют формами. На странице курса заблокированы — пробуйте у себя.
  • Среда: VS Code + Live Server + Prettier + Copilot. Включить Auto Save и Format On Save. Открывать папку проекта, а не один файл. Каркас страницы: ! + Tab.
  • ИИ: чат (объясняет, советует, видит только вставленное), автодополнение Copilot (быстро, но можно нажать Tab не читая), агент (делает много сам — только демо у преподавателя). Правила: 15 минут сам; не вставлять непонятный код; уметь объяснить любую строку; промпт = контекст → задача → ограничения → формат → проверка; Copilot выключаем на контрольных (уроки 6 и 18). Консоль — последняя инстанция: любой ответ ИИ запускаем и проверяем.