StudyCode
К практике
НачальныйJavaScriptпеременныеlet
📌JuniorJavaScriptпеременныеletconstvarscope

Переменные

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

JSПеременные: области видимости и hoisting

Глобальная область

var globalVarfunction sayHi()

Функция sayHi()

let nameconst MAX

Блок if / for / {}

let iconst item

let/const: видны только здесь ↑

✓ Видит: своё + блок внутри + глобальное
❌ var из if/for «вытекает» сюда

let/const — блочная область (любой {})

var — функциональная (только функция или глобальная)

Язык примеров:
Шаг 1 из 2
1

let и const

Что такое переменная?

Переменная — это именованная «коробка» в памяти компьютера, в которой хранится какое-то значение.

javascript
let age = 25;          // коробка с именем age, внутри — число 25
let name = "Иван";     // коробка name, внутри — строка "Иван"

Зачем они нужны? Чтобы сохранить что-то и использовать позже:

javascript
let price = 1000;
let discount = 100;
let total = price - discount;  // 900 — используем оба значения
console.log(total);            // 900

Объявление: let и const

В современном JavaScript два способа объявить переменную:

javascript
let score = 0;       // let — значение можно изменить позже
const PI = 3.14159;  // const — значение задаётся один раз, нельзя переприсвоить

score = 10;   // ✓ let можно изменить
PI = 3;       // ❌ TypeError — const нельзя переприсвоить

Правило: используй const по умолчанию. Переходи на let только когда значение должно меняться (счётчик, флаг, накопитель).

Блочная область видимости

Блок — это любой код внутри фигурных скобок {}. let и const живут только внутри своего блока — снаружи их не видно:

javascript
{
  let greeting = "Привет!";
}
console.log(greeting);  // ❌ Ошибка — greeting не существует здесь

if (true) {
  let x = 10;
}
console.log(x);  // ❌ Ошибка — x осталась внутри блока if

Это хорошо — переменные не «утекают» и не мешают друг другу.

JavaScript
// Примеры хорошего использования

// ✓ const для вещей, которые не меняются
const MAX_SCORE = 100;
const PLAYER_NAME = "Иван";
const GRAVITY = 9.81;

// ✓ let для счётчиков и значений, которые меняются
let score = 0;
let lives = 3;
let isGameOver = false;

// Игровая логика:
score = score + 10;   // набрали очки
lives = lives - 1;    // потеряли жизнь

if (lives === 0) {
  isGameOver = true;  // let — значение изменилось
}

// Примеры из реальных программ:
const PI = 3.14159;        // не меняется — const
const TAX_RATE = 0.2;      // не меняется — const
let currentPage = 1;       // будет меняться — let
let errorMessage = "";     // будет меняться — let