Перейти к содержанию
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Свернуть
Логотип бренда
Категории
evoE

evo

@evo
javascript
Сводка
Сообщения
23
Темы
23
Поделиться
0
Группы
2
Подписчики
0
Подписки
0

Сообщения

Последние Лучшие сообщения Спорные

  • Чем отличаются переменные var, let, const.
    evoE evo

    Самая главная вещь, с которых начинается каждый курс по JavaScript — но которые до сих пор путают даже опытные разработчики: var, let, const.

    Они все "создают переменные", но работают по-разному. Разберёмся, чем.


    1. var

    var name = "Анна";
    

    🔹 Область видимости: функциональная (а не блочная).
    Это значит, что var видна внутри всей функции, даже если объявлена в if или for.

    if (true) {
      var x = 10;
    }
    console.log(x); // 10 — работает! (но это странно)
    

    🔹 Поднятие (hoisting): переменная "всплывает" в начало области видимости, но со значением undefined.

    console.log(y); // undefined, а не ошибка
    var y = 5;
    

    🔹 Можно переопределять и перезаписывать — даже случайно.

    👉 Минус: легко получить утечки, баги и непредсказуемое поведение.


    2. let — современная замена var

    let age = 25;
    

    🔹 Область видимости: блочная ({}), то есть только внутри if, for, function и т.п.

    if (true) {
      let z = 20;
    }
    console.log(z); // Ошибка! z не существует здесь
    

    🔹 Тоже всплывает, но в зону "temporal dead zone" — нельзя использовать до объявления.

    console.log(name); // Ошибка: Cannot access 'name' before initialization
    let name = "Петя";
    

    🔹 Можно менять значение, но нельзя переобъявлять в одном блоке.

    let a = 1;
    a = 2; // ок
    let a = 3; // ошибка!
    

    👉 Используйте let, если значение будет меняться.


    3. const — для неизменяемых значений

    const PI = 3.14;
    

    🔹 Блочная область видимости, как у let.

    🔹 Нельзя переопределять и нельзя оставлять без значения.

    const user; // Ошибка: Missing initializer
    user = "Том";
    

    🔹 Но! const не делает значение глубоко неизменяемым:

    const user = { name: "Лена" };
    user.name = "Маша"; // ок! Объект можно менять
    user = {}; // ошибка! Переприсвоить нельзя
    

    👉 Используйте const по умолчанию. Если нужно менять — тогда let.


    Сравнение в двух строках:

    Область видимости Можно менять Можно переобъявлять
    var функция да да
    let блок {} да нет
    const блок {} нет* нет

    * — нельзя переприсвоить, но можно менять свойства объектов


    ✅ Используйте const по умолчанию
    ✅ Если нужно менять значение — let
    🚫 Забудьте про var (если только не поддерживаете древний код)

    JavaScript javascript

  • Что такое строгий режим в программировании?
    evoE evo

    Пишем код, случайно забываем объявить переменную — и ничего не падает. Всё работает... до поры до времени. Потом — бам! Ошибка в продакшене, и вы ищете баг полдня.

    Строгий режим (strict mode) — это особый режим в языках программирования (например, JavaScript), который помогает избежать ошибок, запрещая неоднозначные или потенциально опасные конструкции.

    'use strict';
    

    И после этого:

    • Нельзя использовать необъявленные переменные
    • Запрещены некоторые "неоднозначные" конструкции
    • Ошибки становятся видны сразу, а не маскируются

    Почему это важно?

    Потому что строгий режим:

    • Помогает избежать глупых опечаток
    • Делает код чище и предсказуемее
    • Предотвращает неявное поведение (например, this больше не превращается в window где попало)

    А в других языках?

    Не только в JS! Многие языки (например, Python с mypy, TypeScript, Rust) тоже имеют свои "строгие" режимы — через типизацию, линтеры или флаги компилятора. Суть та же: поймать ошибку сейчас, а не завтра.

    JavaScript javascript python
  • Войти

  • Нет учётной записи? Зарегистрироваться

  • Войдите или зарегистрируйтесь для поиска.
  • Первое сообщение
    Последнее сообщение
0
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы