var, let, const — в чём разница?В JavaScript есть три способа объявить переменную. Все они ведут себя по-разному. Разберём детально, но простыми словами, чтобы больше не было путаницы.🟡 var — привет из прошлогоОсобенности:🔁 Область видимости: не блочная, а функциональная🔼 Всплывает (hoisting) — поднимается вверх функции, но без значения🔄 Можно переобъявить и изменить😵 Может вести себя неожиданноif (true) { var a = 1;}console.log(a); // 1 — переменная "вышла" из блокаconsole.log(b); // undefined — переменная есть, но ещё без значенияvar b = 2;🔵 let — современный стандартОсобенности:🔁 Область видимости: блочная🔼 Всплывает, но в «мертвой зоне» (TDZ — Temporal Dead Zone), поэтому использовать до объявления нельзя❌ Нельзя переобъявить в той же области видимости✅ Можно менять значениеif (true) { let c = 10;}console.log(c); // ❌ ReferenceError — переменная вне блокаlet d = 5;let d = 6; // ❌ тоже ошибка — уже объявлена🟢 const — постоянство с нюансамиОсобенности:🔁 Область видимости: как у let — блочная❌ Нельзя изменить значение⚠️ Но если значение — объект или массив, можно менять его внутренности📌 Нужно обязательно сразу присвоить значение при объявленииconst x = 42;x = 100; // ❌ ошибкаconst user = { name: "Alice" };user.name = "Bob"; // ✅ работаетuser = { name: "Charlie" }; // ❌ ошибкаВ чём подвох в циклах?Один из частых багов — поведение var в цикле.for (var i = 0; i < 3; i++) { setTimeout(() => console.log(i), 0);}// 3, 3, 3 — потому что var одна на весь циклfor (let i = 0; i < 3; i++) { setTimeout(() => console.log(i), 0);}// 0, 1, 2 — потому что let создаёт новую переменную на каждой итерацииЧто использовать?const — почти всегда. Надёжно, понятно, предсказуемо.let — если переменная будет меняться.var — только если пишете поддержку старого кода. В новом — не надо.#простымисловами #javascript #основы