⚡ JavaScript

Введение: история, особенности, где применяется — JavaScript

Что это и зачем?

Представь, что ты — режиссёр собственного фильма, а твой компьютер — это киностудия. HTML — это как сценарий и декорации (текст, картинки, кнопки, таблицы). CSS — это художник по костюмам и осветитель (цвета, шрифты, красивое расположение). А JavaScript — это актёры и спецэффекты! Именно JS заставляет всё двигаться, реагировать на нажатия кнопок, считать, показывать всплывающие окошки, менять картинки и даже создавать игры.

Если бы сайт был человеком, то:

  • HTML — скелет и кожа (структура).
  • CSS — одежда и макияж (внешний вид).
  • JavaScript — мозг и мышцы (логика и действия).

Без JavaScript сайт был бы просто скучной книжкой, которую можно только читать, но нельзя листать, нажимать на ссылки, играть или заполнять формы. JS делает веб-страницы "живыми".

Где применяется JavaScript?

  • Везде в интернете: ВКонтакте, YouTube, игры в браузере (например, Agar.io), онлайн-калькуляторы, карты (Яндекс.Карты), редакторы кода (как тот, в котором ты сейчас читаешь эту статью).
  • Даже на серверах (с помощью Node.js) — например, чтобы обрабатывать сообщения в чатах или хранить данные.
  • В мобильных приложениях (React Native) и на десктопах (Electron — на нём написан Discord и VS Code).

JavaScript — самый популярный язык в мире! Почему? Потому что он встроен прямо в браузер. Тебе не нужно ничего устанавливать (в отличие от Python, который надо скачивать). Открыл блокнот, написал код, сохранил как .html — и готово! Можно запустить двойным щелчком.

Важное отличие от Python: в Python код выполняется сам по себе в консоли, а в JavaScript он всегда привязан к веб-странице. JS не умеет сам создавать графические окна (как pygame), но зато умеет управлять тем, что уже есть на экране — кнопками, текстом, картинками.


Примеры кода с объяснением

Самый простой способ начать — написать код прямо в браузере. Нажми F12 (или ПКМ → "Посмотреть код") и перейди на вкладку "Console" (Консоль). Туда можно вводить команды. Но мы будем писать полноценные страницы.

Создай на компьютере файл test.html, открой его блокнотом и вставь туда код из примеров. Потом сохрани и открой в браузере.

Пример 1: Привет, мир! (самая первая программа)

// Это однострочный комментарий. Он не выполняется.
/* А это многострочный комментарий.
   Он нужен, чтобы объяснять код. */

// Команда alert() показывает всплывающее окошко с сообщением.
alert("Привет, мир! JavaScript работает!");

// Команда console.log() выводит текст в консоль разработчика.
// Чтобы увидеть результат, нажми F12 и открой вкладку Console.
console.log("Это сообщение в консоли. Ты молодец!");

// Команда document.write() пишет текст прямо на страницу.
document.write("<h1>Это заголовок, созданный JavaScript!</h1>");

Что произойдёт?

  • Сначала выскочит окошко с текстом.
  • Потом в консоли (F12) появится второе сообщение.
  • В самом конце на странице появится большой заголовок.

В Python первая программа — это просто print("Привет"). В JS мы используем alert() или console.log(). Разница в том, что JS живёт в браузере, поэтому у него есть доступ к окнам и к самой странице.

Пример 2: Переменные — коробочки для данных

// Переменная — это как коробка с наклейкой.
// В Python ты пишешь: name = "Вася"
// В JS мы используем ключевое слово let (современный способ).

let имя = "Маша";           // Строка (текст)
let возраст = 12;            // Число
let любитПиццу = true;       // Логическое значение (да/нет)
let пустаяКоробка = null;    // Пустота (ничего)

// Выведем всё в консоль:
console.log("Имя:", имя);
console.log("Возраст:", возраст);
console.log("Любит пиццу?", любитПиццу);

// Можно складывать строки (конкатенация):
let приветствие = "Привет, " + имя + "! Тебе " + возраст + " лет.";
console.log(приветствие);

// А можно использовать шаблонные строки (как f-строки в Python, только с ${}):
let лучшеПриветствие = `Привет, ${имя}! Тебе ${возраст} лет.`;
console.log(лучшеПриветствие);

// Изменим значение переменной:
возраст = 13;  // У Маши был день рождения!
console.log("Теперь возраст:", возраст);

Объяснение: Переменные нужны, чтобы хранить информацию. let — это как var в Python, только в JS нужно обязательно писать let (или const для констант). Обрати внимание на точку с запятой ; в конце каждой строки — в Python её нет, а в JS она ставится (хотя иногда работает и без неё, но лучше всегда ставить).

Шаблонные строки (с обратными кавычками `` ` ``) очень удобны — вставляешь переменные прямо в текст через ${}.

Пример 3: Условный оператор if (как в жизни: "Если... то...")

let возрастПользователя = 15;

// Если возраст больше или равен 18:
if (возрастПользователя >= 18) {
    console.log("Ты взрослый! Можно смотреть фильмы ужасов.");
} else if (возрастПользователя >= 12) {
    console.log("Ты подросток! Можно играть в большинство игр.");
} else {
    console.log("Ты ребёнок. Лучше почитай книжку.");
}

// Ещё пример: проверка на чётность числа
let число = 7;
if (число % 2 === 0) {  // % — это остаток от деления
    console.log("Число чётное.");
} else {
    console.log("Число нечётное.");
}

// Обрати внимание: в JS для сравнения используется === (три равно),
// а не == (два равно). Два равно — это "нестрогое" сравнение, оно может
// давать странные результаты (например, 5 == "5" — это правда, хотя
// число и строка — разные типы). Всегда используй ===.

Объяснение: if работает точно так же, как в Python. Разница только в скобках: в JS условие обязательно берётся в круглые скобки (), а блок кода — в фигурные {}. В Python вместо фигурных скобок используются отступы (пробелы). В JS отступы не важны для работы кода, но их ставят для красоты.

Обрати внимание на === — это строгое сравнение. В Python аналог — == (одно равно — это присваивание, как и в JS). Запомни: = — положить в коробку, === — проверить, одинаковое ли содержимое.

Пример 4: Циклы (повторение — мать учения)

// Цикл while — повторяй, пока условие верно.
let счетчик = 1;
while (счетчик <= 5) {
    console.log("Счётчик равен:", счетчик);
    счетчик = счетчик + 1;  // Увеличиваем на 1. Можно записать короче: счетчик++;
}
// Выведет: 1,2,3,4,5

// Цикл for — самый популярный. Он как while, но компактнее.
// for (начало; условие; шаг)
for (let i = 1; i <= 5; i++) {
    console.log("i =", i);
}
// Результат тот же.

// А теперь интересное: выведем таблицу умножения на 3:
for (let множитель = 1; множитель <= 10; множитель++) {
    let результат = 3 * множитель;
    console.log(`3 × ${множитель} = ${результат}`);
}

Объяснение: Циклы нужны, чтобы не писать одно и то же сто раз. for состоит из трёх частей: 1) создаём счётчик (let i = 1), 2) проверяем условие (i <= 5), 3) делаем шаг (i++ — это то же самое, что i = i + 1).

В Python цикл for выглядит иначе: for i in range(1, 6):. В JS мы сами управляем счётчиком. Это даёт больше гибкости, но требует внимательности — легко забыть увеличить счётчик, и цикл станет бесконечным (зависнет страница).

Пример 5: Функции — твои личные мини-программы

// Функция — это как рецепт. Ты даёшь ей ингредиенты (аргументы),
// она делает что-то и возвращает результат.

// Объявляем функцию:
function приветствие(имя) {
    // Это тело функции
    let сообщение = "Здравствуй, " + имя + "!";
    return сообщение;  // Возвращаем результат
}

// Вызываем функцию:
let результат1 = приветствие("Анна");
console.log(результат1);  // "Здравствуй, Анна!"

// Можно вызвать ещё раз с другим именем:
let результат2 = приветствие("Пётр");
console.log(результат2);  // "Здравствуй, Пётр!"

// Функция может считать:
function сумма(a, b) {
    return a + b;
}

let x = 10;
let y = 20;
console.log("Сумма:", сумма(x, y));  // 30

// Функция может ничего не возвращать, а просто делать действие:
function показатьОшибку() {
    alert("Что-то пошло не так! Проверь ввод.");
}

// Вызовем:
показатьОшибку();  // Появится окошко с ошибкой

Объяснение: Функции — это кирпичики любой программы. Ты пишешь код один раз, а потом используешь его много раз. В Python функции объявляются через def, в JS — через function. В Python нет фигурных скобок, а есть двоеточие и отступы. В JS фигурные скобки обязательны.

Функции могут принимать параметры (то, что в скобках) и возвращать значение через return. Если return не написать, функция вернёт undefined (ничего).


Типичные ошибки

Даже опытные программисты иногда ошибаются. Вот что чаще всего ловит новичков в JavaScript:

1. Забыл точку с запятой (хотя это не всегда критично)

let a = 5
let b = 10
console.log(a + b)

Это сработает, но лучше всегда ставить ; в конце строки. Без точки с запятой JS иногда неправильно понимает, где заканчивается команда, и выдаёт ошибку.

2. Неправильные кавычки

// Ошибка: смесь кавычек
let name = 'Привет, "друг"';  // Так можно (одинарные внутри двойных)
let name2 = "Привет, 'друг'"; // И так можно
// А вот так — ошибка:
let name3 = 'Привет, "друг"';  // Нет, подожди, это тоже работает!
// Главное: нельзя начать строку с одинарной, а закончить двойной:
let name4 = 'Привет";  // ОШИБКА!

Всегда используй одинаковые кавычки для одной строки. Или обратные кавычки для шаблонов.

3. Путаница с = и ===

let x = 5;
// if (x = 10) {  // ОШИБКА! Одно равно — это присваивание, а не сравнение!
//     console.log("x равен 10");
// }
// Правильно:
if (x === 10) {
    console.log("x равен 10");
} else {
    console.log("x не равен 10");
}

Запомни: = — положить значение, === — проверить равенство. В Python одно равно — это присваивание, два — сравнение. В JS два равно (==) тоже есть, но оно "ленивое" и может считать число 5 и строку "5" одинаковыми. Используй === всегда.

4. Бесконечный цикл

// ОПАСНО! Этот код зависнет браузер!
// let i = 0;
// while (i < 10) {
//     console.log(i);
//     // Забыли написать i++;
// }
// Будет крутиться вечно, пока не закроешь вкладку.

Всегда проверяй, что счётчик в цикле меняется. Если страница зависла — нажми Ctrl+C в консоли или закрой вкладку.

5. Регистр букв имеет значение

// JavaScript чувствителен к регистру!
let myVariable = 10;
console.log(MyVariable);  // ОШИБКА! MyVariable не объявлена (с большой буквы)
console.log(myvariable);  // ОШИБКА! Всё маленькими — тоже другое имя

В Python тоже регистр важен, но новички часто путают. Привыкай: myVariable и myvariable — это две разные переменные.

6. Неправильное имя переменной

// Нельзя начинать с цифры:
// let 1number = 5;  // ОШИБКА!

// Нельзя использовать дефис:
// let my-name = "Вася";  // ОШИБКА! Дефис — это минус.

// Можно использовать подчёркивание и знак доллара:
let _private = "секрет";
let $currency = 100