Назад к вопросам
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' }; // Ошибка