Справочник

Справочник JavaScript с объяснением на примерах

Разница между const, let и var, что такое querySelector, зачем нужен onclick — объясняем понятным языком, с примерами кода, а не просто сухими определениями.

📖 8 тем 🎯 Для новичков 🔄 Обновлено: 2026

Содержание

  1. 1. const, let, var — в чём разница
  2. 2. Как выбрать элемент на странице
  3. 3. onclick, onchange, addEventListener
  4. 4. Шаблонные строки
  5. 5. Стрелочные функции vs обычные
  6. 6. Перебор массивов: forEach, map, filter
  7. 7. Работа с объектами
  8. 8. JSON: stringify и parse

1. const, let, var — в чём разница

Все три ключевых слова создают переменную, но ведут себя по-разному.

var — устаревший вариант

var — самый старый способ. У него «дырявая» область видимости (function scope), из-за чего переменная может случайно «утекать» за пределы блока { }. Сегодня использовать его не рекомендуется.

let — переменная, которую можно менять

let count = 0;
count = count + 1; // можно менять значение
console.log(count); // 1

let живёт строго внутри блока { }, в котором объявлена — это и называют block scope.

const — переменная, которую нельзя переназначить

const name = "Иван";
name = "Пётр"; // ❌ Ошибка: Assignment to constant variable
Важно: const запрещает менять саму переменную, но не запрещает менять содержимое объекта или массива внутри неё:
const user = { name: "Иван" };
user.name = "Пётр"; // ✅ так можно

Правило по умолчанию: используй const везде, где переменная не будет переназначена. Если значение будет меняться — бери let. var сегодня почти не используют.

2. Как выбрать элемент на странице

Чтобы менять что-то в HTML через JavaScript, сначала нужно «найти» этот элемент.

querySelector — находит первый подходящий элемент

const btn = document.querySelector(".my-button");
const title = document.querySelector("#main-title");

Работает как CSS-селектор: .class — по классу, #id — по id, tag — по тегу.

querySelectorAll — находит все подходящие элементы

const items = document.querySelectorAll(".list-item");
items.forEach(function (item) {
    console.log(item.textContent);
});

getElementById — быстрый поиск по id

const box = document.getElementById("box");

querySelector универсальнее и в 99% случаев его достаточно — рекомендуем начинать именно с него.

3. onclick, onchange, addEventListener

События — это реакция на действия пользователя: клик, ввод текста, отправка формы.

onclick — событие клика

const btn = document.querySelector(".btn");
btn.onclick = function () {
    console.log("Кнопку нажали!");
};

onchange — событие изменения значения

Срабатывает, когда пользователь меняет значение поля ввода, select или чекбокса и убирает фокус с элемента.

const select = document.querySelector("select");
select.onchange = function () {
    console.log("Выбрано:", select.value);
};

addEventListener — более гибкий способ

btn.addEventListener("click", function () {
    console.log("Клик через addEventListener");
});
В чём разница: у элемента может быть только один обработчик onclick — новый заменит старый. С addEventListener можно повесить сколько угодно обработчиков на одно событие — поэтому в проектах чаще используют именно его.

4. Шаблонные строки (template literals)

Позволяют вставлять переменные прямо в текст строки, используя обратные кавычки ` вместо обычных.

const name = "Мария";
const age = 20;

// старый способ
console.log("Привет, " + name + "! Тебе " + age + " лет.");

// шаблонная строка
console.log(`Привет, ${name}! Тебе ${age} лет.`);

Внутри ${ } можно писать любое выражение, не только переменную: `Через год: ${age + 1}`.

5. Стрелочные функции vs обычные

// обычная функция
function sum(a, b) {
    return a + b;
}

// стрелочная функция
const sum2 = (a, b) => a + b;

Стрелочные функции короче — если тело состоит из одного выражения, return и фигурные скобки можно опустить.

Главное отличие — стрелочные функции не имеют собственного this, они берут его из окружающего кода. На старте это не критично, но важно знать, что такая разница существует.

6. Перебор массивов: forEach, map, filter

forEach — просто «пройтись» по массиву

const fruits = ["яблоко", "банан", "груша"];
fruits.forEach(function (fruit) {
    console.log(fruit);
});

map — создать новый массив на основе старого

const numbers = [1, 2, 3];
const doubled = numbers.map(n => n * 2);
console.log(doubled); // [2, 4, 6]

filter — оставить только нужные элементы

const numbers = [1, 2, 3, 4, 5];
const even = numbers.filter(n => n % 2 === 0);
console.log(even); // [2, 4]

Простое правило: forEach — когда нужно просто что-то сделать с каждым элементом; map — когда нужен новый преобразованный массив; filter — когда нужно отобрать часть элементов.

7. Работа с объектами

const user = {
    name: "Анна",
    age: 22,
    isStudent: true
};

console.log(user.name);       // через точку
console.log(user["age"]);     // через квадратные скобки

user.city = "Киев";           // добавить новое свойство
delete user.isStudent;        // удалить свойство

Квадратные скобки удобны, когда имя свойства хранится в переменной: user[key].

8. JSON: stringify и parse

JSON — формат обмена данными. В JavaScript объект и JSON-строка — не одно и то же, между ними нужно преобразование.

const user = { name: "Олег", age: 30 };

// объект → JSON-строка
const json = JSON.stringify(user);
console.log(json); // '{"name":"Олег","age":30}'

// JSON-строка → объект
const parsed = JSON.parse(json);
console.log(parsed.name); // "Олег"

JSON.stringify чаще всего нужен для отправки данных на сервер или сохранения в localStorage, а JSON.parse — для обратного превращения.

Что дальше

Хочешь разобраться во всём этом системно?

В курсе JavaScript каждая из этих тем разобрана подробно, с практикой и реальными проектами — без «воды» и пропущенных шагов.