Основные способы объявления переменных в JavaScript

Раздел: Основы JavaScript -> Переменные и типы данных

Объявление переменных с помощью var

Ключевое слово var используется для объявления переменных в JavaScript с самого начала. Несмотря на появление let и const, var остается важным для понимания, особенно при работе с устаревшим кодом.

Синтаксис: var имя = значение;

var message = "Привет!";
console.log(message); // Привет!

Javascript var (переменные в javascript)

"Привет!"

Область видимости переменной var ограничена функцией, в которой она объявлена, или глобальным контекстом, если объявлена вне функции.

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

  • Поднятие (hoisting) - объявление переменной перемещается вверх, но инициализация остается на месте. Это может вызвать undefined.
  • Отсутствие блочной области видимости - переменная var доступна за пределами блока if, for и т.д.
  • Переопределение без ошибки - можно повторно объявить ту же переменную, что приводит к неявной перезаписи.

Рекомендуется избегать var в новом коде, отдавая предпочтение let и const.

Как объявить переменную с блочной областью видимости?

Ключевое слово let создает переменную, ограниченную блоком (фигурные скобки).

if (true) {
  let a = 10;
}
console.log(a); // ReferenceError: a is not defined

Проблема: переменная let не существует до своего объявления (Temporal Dead Zone), поэтому обращение к ней до строки объявления вызывает ReferenceError.

Решение: всегда объявлять let в начале блока и не обращаться до инициализации.

Как объявить константу, значение которой нельзя изменить?

Ключевое слово const объявляет константу, которую нельзя переприсвоить. Однако, если константа содержит объект, его свойства можно изменять.

const PI = 3.14159;
PI = 3; // TypeError: Assignment to constant variable.

Ошибка: попытка изменить примитивную константу вызывает TypeError.

Правильное использование: const подходит для значений, которые не должны быть переопределены, например математические константы, ссылки на DOM-элементы.

Расширенные примеры использования переменных

Ниже приведены примеры, демонстрирующие особенности var, let и const.

Поднятие (hoisting) переменной var

Пример
console.log(hoistedVar); // undefined
var hoistedVar = 5;
undefined

Переменная с var "поднимается", но инициализация не происходит, поэтому значение undefined.

Разница в области видимости: var vs let в цикле for

Пример
for (var i = 0; i < 3; i++) {
  setTimeout(function() { console.log(i); }, 100);
}
// Вывод: 3, 3, 3
3
3
3
Пример
for (let j = 0; j < 3; j++) {
  setTimeout(function() { console.log(j); }, 100);
}
// Вывод: 0, 1, 2
0
1
2

var создает одну переменную для всего цикла, let создает новую для каждой итерации.

Временная мертвая зона (Temporal Dead Zone) для let и const

Пример
console.log(x); // ReferenceError: Cannot access 'x' before initialization
let x = 10;

Изменение свойств объекта, объявленного через const

Пример
const obj = { name: "Alice" };
obj.name = "Bob"; // разрешено
console.log(obj.name); // Bob
obj = {}; // TypeError: Assignment to constant variable.
Bob
(ошибка присвоения)

Глобальная переменная через var (свойство window)

Пример
var globalVar = "test";
console.log(window.globalVar); // "test"
"test"

Переменные, объявленные через var на глобальном уровне, становятся свойствами объекта window. Для let и const это не так.

Повторное объявление var

Пример
var a = 1;
var a = 2;
console.log(a); // 2
2

Повторное объявление с var не вызывает ошибки, что может быть источником багов.

Объявление без ключевого слова (нестрогий режим)

Пример
function test() {
  implicitVar = 100;
}
test();
console.log(implicitVar); // 100 (глобальная переменная)
100

В нестрогом режиме присвоение значения необъявленной переменной создает глобальную переменную. В строгом режиме (use strict) это вызывает ReferenceError.

Переменные в JavaScript - comments

En
Javascript var (javascript)