Назад к вопросам
Junior
90
questionbank

Какими способами можно объявить переменные в JavaScript? Назовите отличия между этими способами.

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

В JavaScript переменные можно объявить тремя способами: var, let, const.

Отличия между ними:

Отличие var let const
Область видимости Функциональная Блочная Блочная
Переопределение Возможно Возможно Невозможно
Переприсвоение Возможно Возможно Невозможно
Хойстинг Поднимает объявление и инициализацию undefined Поднимает объявление, но не инициализацию Поднимает объявление, но не инициализацию

Примеры:

// var
function exampleVar() {
  var x = 10; // Функциональная область видимости
  if (true) {
    var x = 20; // Переопределение возможно внутри той же функции
    console.log(x); // 20
  }
  console.log(x); // 20 (переменная x из if доступна здесь)
}

console.log(x); // Ошибка: ReferenceError: x is not defined (x не виден вне функции)

// Хойстинг var
console.log(a); // undefined
var a = 5;
console.log(a); // 5
// let
function exampleLet() {
  let y = 10; // Блочная область видимости
  if (true) {
    let y = 20; // Переопределение невозможно внутри того же блока
    console.log(y); // 20 (это другая переменная y)
  }
  console.log(y); // 10 (переменная y извне блока)
}

console.log(y); // Ошибка: ReferenceError: y is not defined

// Хойстинг let
// console.log(b); // Ошибка: ReferenceError: Cannot access 'b' before initialization
let b = 5;
console.log(b); // 5
// const
function exampleConst() {
  const z = 10; // Блочная область видимости
  // z = 20; // Ошибка: TypeError: Assignment to constant variable. (Переприсвоение невозможно)
  if (true) {
    const z = 20; // Переопределение невозможно внутри того же блока
    console.log(z); // 20 (это другая переменная z)
  }
  console.log(z); // 10 (переменная z извне блока)
}

console.log(z); // Ошибка: ReferenceError: z is not defined

// Хойстинг const
// console.log(c); // Ошибка: ReferenceError: Cannot access 'c' before initialization
const c = 5;
console.log(c); // 5

// Для объектов и массивов, объявленных через const, можно изменять содержимое
const obj = { name: 'Test' };
obj.name = 'New Test'; // Допустимо
// obj = { name: 'Another Test' }; // Ошибка