Карточка 1
Текст карточки
Карточка 2
Ещё текст
JavaScript — язык программирования, который делает веб-страницы интерактивными. Кнопки реагируют, данные обновляются, анимации запускаются — всё благодаря JS.
HTML — скелет. CSS — одежда. JavaScript — мышцы и нервная система. Без JS страница мертва: кнопки не работают, формы не отправляются, контент не обновляется.
JavaScript — единственный язык программирования, который браузер понимает «из коробки». Его код выполняется прямо на странице, без установки дополнительных программ.
let, const, var — как хранить данные в памяти
| Ключевое слово | Особенности | Когда использовать |
|---|---|---|
| let | Можно переприсвоить, блочная область видимости | Значения, которые меняются |
| const | Нельзя переприсвоить, блочная область видимости | Константы, значения по умолчанию |
| var | Можно переприсвоить, функциональная область видимости | Устаревшее, не использовать |
| Тип | Пример | Описание |
|---|---|---|
| string | "Привет" | Текст (в кавычках) |
| number | 42, 3.14 | Целые и дробные числа |
| boolean | true / false | Логическое значение |
| null | null | «Ничего», намеренное отсутствие |
| undefined | undefined | Переменная объявлена, но значение не присвоено |
| array | [1, 2, 3] | Упорядоченный список значений |
| object | {key: "value"} | Набор пар ключ-значение |
typeof показывает тип значения: typeof 42 → "number", typeof "hello" → "string". Полезно для отладки.
Ветвление логики и повторение действий
| Оператор | Значение | Пример |
|---|---|---|
| === | Строгое равенство (значение И тип) | 5 === "5" → false |
| !== | Строгое неравенство | 5 !== "5" → true |
| > < >= <= | Больше, меньше, больше/равно, меньше/равно | age >= 18 |
| && | Логическое И (оба условия) | age > 0 && age < 100 |
| || | Логическое ИЛИ (хотя бы одно) | day === "Сб" || day === "Вс" |
| ! | Логическое НЕ (отрицание) | !isStudent |
== сравнивает с приведением типов: "5" == 5 → true. === — строгое: "5" === 5 → false. Всегда используйте ===!
Переиспользуемые блоки кода с параметрами и возвратом значения
Обратные кавычки `...` позволяют вставлять переменные через ${...}:
Document Object Model: как JavaScript находит и меняет элементы
Когда браузер загружает HTML, он строит DOM-дерево — древовидную структуру из всех элементов. JavaScript может читать и менять это дерево.
| Метод | Что возвращает |
|---|---|
| document.querySelector('.card') | Первый элемент, matching CSS-селектор |
| document.querySelectorAll('li') | Все matching элементы (NodeList) |
| document.getElementById('app') | Элемент с указанным id |
Реакция на действия пользователя: клики, ввод, наведение
| Событие | Когда срабатывает |
|---|---|
| click | Клик мышью или тап на телефоне |
| input | Изменение значения поля ввода |
| submit | Отправка формы |
| keydown / keyup | Нажатие / отпускание клавиши |
| mouseover / mouseout | Наведение / уход курсора |
| scroll | Прокрутка страницы |
| DOMContentLoaded | HTML полностью загружен и DOM построен |
event.preventDefault() отменяет действие по умолчанию: переход по ссылке, отправку формы. Полезно для кастомной обработки.
Асинхронность: таймеры, загрузка данных с сервера
JSON (JavaScript Object Notation) — формат обмена данными. Выглядит как JS-объект, но с двойными кавычками:
fetch("assets/data.json") — точно так же, как показано выше. JSON-файлы с вопросами экзамена, блоками конструктора — всё это JSON.
fetch(url), браузер выполняет полный стек TCP/IP: DNS-запрос (порт 53) → TCP-рукопожатие (порт 80/443) → HTTP-запрос → получение JSON. Всё, что вы изучали в главе 6 (протоколы, порты, инкапсуляция) — работает под капотом каждого fetch().
Напишите JavaScript-код и нажмите ▶ Run. Результат появится внизу. Используйте console.log() для вывода.
Это живое DOM-дерево мини-страницы. Кликните на любой узел — справа появятся его свойства, методы и CSS.
Текст карточки
Ещё текст
Введите CSS-селектор — все совпавшие элементы подсветятся. Попробуйте задания ниже.
Подзаголовок
Текст первой карточки
Эта карточка выделена
Двигайте мышь, кликайте, нажимайте клавиши, вводите текст — все события записываются в лог.