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

Гайд по JavaScript для начинающих

Пошаговый гайд по JavaScript для начинающих: переменные, условия, массивы, функции, DOM, события, формы и запросы с практическими заданиями.

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

Как пользоваться гайдом

Нужны браузер, редактор кода и базовые знания HTML. Знание CSS поможет оформить результат, но для первых упражнений не обязательно. Откройте консоль разработчика: туда можно выводить промежуточные значения.

1. Подключаем JavaScript к странице

Сохраните код в файле app.js и подключите его в HTML с атрибутом defer. Тогда браузер выполнит скрипт после разбора документа, не блокируя разметку.

<button id="hello" type="button">Приветствие</button>
<script src="app.js" defer></script>
Практика

Создайте app.js со строкой console.log("Скрипт подключён"); и найдите сообщение в консоли браузера.

2. Переменные и значения

Используйте const, если переменной не нужно новое присваивание, и let, если значение будет меняться. Строки, числа, логические значения и null ведут себя по-разному; проверяйте результат через typeof.

const project = "Сайт студии";
let tasksDone = 0;
tasksDone += 1;
console.log(project, tasksDone, typeof tasksDone);
Практика

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

3. Условия и сравнения

Условие выбирает действие по значению выражения. Для сравнения значений и типов используйте ===; запись = выполняет присваивание и здесь не подходит.

const width = window.innerWidth;
if (width < 600) {
  console.log("Узкий экран");
} else {
  console.log("Широкий экран");
}
Практика

Измените порог с 600 на 800 и проверьте сообщение при разной ширине окна.

4. Массивы, объекты и циклы

Массив хранит упорядоченный набор значений, объект — именованные свойства. Цикл for...of помогает обработать каждый элемент массива. Избегайте повторения одинаковых строк кода вручную.

const services = [
  { name: "Сайт", price: 100000 },
  { name: "Поддержка", price: 15000 }
];
for (const service of services) {
  console.log(service.name, service.price);
}
Практика

Добавьте третью услугу и выведите только те, у которых цена больше 20 000.

5. Функции и возвращаемые значения

Функция объединяет действие с понятным именем. Параметры передают данные внутрь, а return отдаёт результат. Старайтесь, чтобы функция решала одну задачу и не зависела от скрытых переменных.

function formatPrice(value) {
  return new Intl.NumberFormat("ru-RU").format(value) + " ₽";
}
console.log(formatPrice(15000));
Практика

Напишите функцию, которая получает имя и возвращает строку приветствия, не выводя её сама.

6. Находим элементы в DOM

DOM — представление HTML-документа в браузере. querySelector находит первый элемент по CSS-селектору. Если элемент не найден, результат будет null, поэтому при изменении страницы это стоит учитывать.

const heading = document.querySelector("h1");
if (heading) {
  heading.textContent = "Привет, JavaScript!";
}
Практика

Добавьте абзац с классом .status и измените его текст через JavaScript.

7. События и кнопки

Обработчик события запускается после действия пользователя. Не записывайте обработчик прямо в HTML через onclick: отдельный файл проще поддерживать и проверять.

const button = document.querySelector("#hello");
const status = document.querySelector(".status");
button.addEventListener("click", () => {
  status.textContent = "Кнопка нажата";
});
Практика

Добавьте счётчик нажатий. При каждом клике обновляйте число в тексте страницы.

8. Формы и проверка данных

Событие submit происходит при отправке формы, в том числе клавишей Enter. Простейшая проверка на клиенте улучшает подсказки, но на сервере данные всё равно нужно проверять повторно.

const form = document.querySelector("#contact-form");
form.addEventListener("submit", (event) => {
  const name = form.elements.name.value.trim();
  if (!name) {
    event.preventDefault();
    form.elements.name.focus();
  }
});
Практика

Создайте форму с полем name и сообщением об ошибке. Проверьте пустой ввод и ввод с пробелами.

9. Запросы и асинхронный код

fetch получает данные по сети. Ответ может быть ошибочным даже без сетевого сбоя, поэтому проверяйте response.ok. Для учебного проекта используйте тестовый JSON-файл, размещённый рядом со страницей.

async function loadData() {
  try {
    const response = await fetch("data.json");
    if (!response.ok) throw new Error("Не удалось загрузить данные");
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error(error);
  }
}
Практика

Создайте data.json с массивом услуг и выведите его в консоль. Запускайте страницу через локальный сервер, а не file://.

10. Итоговый проект: список задач

Соберите небольшую страницу со строкой ввода, кнопкой и списком. По нажатию добавляйте непустую задачу в DOM через createElement и textContent. Так текст пользователя не интерпретируется как HTML.

const input = document.querySelector("#task");
const list = document.querySelector("#tasks");
document.querySelector("#add").addEventListener("click", () => {
  const value = input.value.trim();
  if (!value) return;
  const item = document.createElement("li");
  item.textContent = value;
  list.append(item);
  input.value = "";
});
Практика

Добавьте удаление задачи отдельной кнопкой. Проверьте пустую строку, длинный текст и ввод с символами < и >.

Что изучать дальше

Если нужен справочный синтаксис, откройте справочник JavaScript. Для продолжения посмотрите учебный раздел MDN по JavaScript. Чтобы понять серверную часть сайта, переходите к гайду по PHP.

Заявка

Расскажите о проекте

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

Форма обратной связи

Отвечаем в рабочие дни с 10:00 до 19:00

Написать в Telegram