Gernar
JavaScript: язык и типы

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

Разбор вопроса «Что такое переменная» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.

Вопрос

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

Профессия

Frontend Developer

Что хочет услышать интервьюер

Интервьюер хочет убедиться, что кандидат понимает базовую концепцию переменных: их назначение, способы объявления и основные отличия в разных языках (например, var vs let в JS). Также важно, чтобы кандидат мог объяснить это простыми словами.

Ключевые тезисы

  • Переменная — это именованная область памяти, которая хранит данные определенного типа.
  • Она позволяет обращаться к данным по имени, а не по адресу в памяти, что упрощает написание и чтение кода.
  • В JavaScript переменные объявляются с помощью ключевых слов var, let или const, каждое из которых имеет свои особенности (область видимости, возможность переопределения).
  • Переменная может изменять свое значение (кроме const), но тип данных обычно остается неизменным (в статически типизированных языках).

Подробный ответ

Переменная — это именованная область памяти, которая используется для хранения данных. В программировании переменные позволяют сохранять значения, чтобы их можно было использовать позже в коде. Это упрощает процесс написания и чтения кода, так как вместо работы с адресами памяти напрямую, разработчик использует понятные имена переменных. В JavaScript переменные объявляются с помощью ключевых слов var, let или const. Каждое из этих слов имеет свои особенности. Например, var имеет функциональную область видимости, а let и const — блочную. Кроме того, let позволяет изменять значение переменной, а const создает неизменяемую (константную) переменную, значение которой нельзя изменить после инициализации. Однако важно помнить, что если переменная const хранит объект или массив, то содержимое объекта или массива можно изменять, но саму переменную нельзя переназначить на другой объект или массив.

Практические примеры

Пример 1

Пример объявления переменных в JavaScript:

let age = 25;
const name = 'Alice';

Здесь переменная age может быть изменена, а переменная name останется неизменной.

Пример 2

Пример с использованием блочной области видимости:

if (true) {
  let x = 10;
  console.log(x); // 10
}
console.log(x); // Ошибка: x не определено.

Это демонстрирует, что let ограничивает область видимости переменной блоком, в котором она объявлена.

Пример 3

Пример с hoisting:

console.log(y); // undefined
var y = 5;

В этом примере переменная y объявлена с использованием var, что позволяет использовать ее до объявления (hoisting), но ее значение будет undefined.

Частые ошибки

  • Ошибка: Попытка изменить значение переменной, объявленной с помощью const.

const PI = 3.14; PI = 3.14159; // Ошибка: Assignment to constant variable.

  • Ошибка: Непонимание области видимости переменных, объявленных с помощью var.

for (var i = 0; i < 3; i++) { setTimeout(function() { console.log(i); }, 1000); } // Вывод: 3, 3, 3

Здесь переменная i имеет функциональную область видимости, и все вызовы setTimeout используют последнее значение i.

Связанные темы

  • Область видимости переменных
  • Hoisting в JavaScript
  • Temporal Dead Zone (TDZ)
  • Типы данных в JavaScript

Follow-up вопросы

В чем разница между var, let и const в JavaScript?

Уровень: basic

var имеет функциональную область видимости и поднимается (hoisting). let и const имеют блочную область видимости. const нельзя переопределять, но можно изменять свойства объекта или элементы массива, если они объявлены через const.

Что такое область видимости переменной?

Уровень: intermediate

Область видимости определяет, где переменная доступна в коде. В JavaScript есть глобальная, функциональная и блочная области видимости. let и const имеют блочную область видимости, var — функциональную.

Как работает hoisting переменных в JavaScript?

Уровень: intermediate

Hoisting — это механизм, при котором объявления переменных и функций перемещаются вверх своей области видимости. var поднимается с инициализацией undefined, let/const тоже поднимаются, но остаются в Temporal Dead Zone до объявления.

Можно ли изменить значение const в JavaScript?

Уровень: basic

Нет, const нельзя переопределять после объявления. Однако если const содержит объект или массив, их внутренние свойства/элементы можно изменять, так как const хранит ссылку, а не само значение.

Что такое Temporal Dead Zone (TDZ) для let и const?

Уровень: advanced

TDZ — это период между созданием переменной (hoisting) и её объявлением, где переменная недоступна. Попытка обратиться к переменной в TDZ вызовет ReferenceError. Это помогает избегать ошибок, связанных с использованием до объявления.

Содержание