Вступ: Коли ви вивчаєте JavaScript, ви зустрінете три способи оголошення змінних: let, const і var. На перший погляд вони можуть здатися однаковими, але насправді вони поводяться досить по-різному. У цьому посібнику ми розглянемо, що робить кожен з них, коли їх використовувати і чому вони важливі у вашому коді. Крім того, ми використаємо прості приклади, щоб ви могли побачити різницю.
1. var — Старий спосіб
До того, як JavaScript отримав let і const, var був єдиним варіантом. Ось що вам слід знати про нього:
- Функціональна область видимості (Function Scope): Коли ви оголошуєте змінну за допомогою
varвсередині функції, вона існує тільки в цій функції. Не має значення, чи знаходиться вона всередині блоку (наприклад, в операторіifабо циклі). - Піднесення (Hoisting): Це модне слово для того, як JavaScript "переміщає" оголошення змінних на початок функції або скрипту. Але він переміщує лише оголошення, а не значення.
Приклад з var:
function testVar() {
console.log(x); // undefined, бо оголошення піднято, але не значення
var x = 10;
console.log(x); // 10, після того, як значення присвоєно
}
У цьому прикладі, навіть хоча x оголошено після першого виклику console.log(), JavaScript "піднімає" оголошення на початок, але не встановлює значення до пізніше.
2. let — Новіший, розумніший спосіб
let з'явився в ES6 (великому оновленні JavaScript) і є великим покращенням порівняно з var. Ось чому:
- Блокова область видимості (Block Scope): З
letзмінна існує тільки всередині блоку (наприклад, в циклі або операторіif), де вона оголошена. Це відрізняється відvar, який не враховує блоки. - Без проблем з піднесенням: Хоча
letі піднімається (переміщується на початок), ви не можете використовувати його до того, як воно буде оголошено — спроба зробити це призведе до помилки.
Приклад з let:
function testLet() {
if (true) {
let y = 20;
console.log(y); // 20
}
// console.log(y); // Помилка! y не визначена поза блоком
}
Зверніть увагу, що y працює тільки всередині оператора if. Ззовні її не існує, і спроба використовувати її призведе до помилки.
3. const — Постійна (незмінна) змінна
const схожий на let, оскільки також поважає блокову область видимості, але з однією важливою різницею:
- Незмінність (Immutability): Коли ви використовуєте
const, ви повинні одразу призначити значення, і після цього ви не можете перепризначити його. Однак, якщо зміннаconstє об'єктом або масивом, ви все одно можете змінювати вміст всередині нього (але не перепризначити сам об'єкт або масив).
Приклад з const:
const z = 30;
console.log(z); // 30
// z = 40; // Помилка! Ви не можете перепризначити змінну const
const obj = { a: 1 };
obj.a = 2; // Це нормально! Ви можете змінювати вміст об'єкта або масиву
console.log(obj); // { a: 2 }
У цьому прикладі z не можна змінити, але ми можемо змінювати властивості obj.
Коли який використовувати?
- Використовуйте
var: Якщо ви працюєте зі старим JavaScript кодом або вам потрібна функціональна область видимості (хоча варто уникатиvarв сучасному коді). - Використовуйте
let: Для змінних, які можуть змінюватися, особливо коли вам потрібно, щоб вони були обмежені блоком (наприклад, всередині циклу або умови). - Використовуйте
const: Для змінних, значення яких не повинні змінюватися — наприклад, для постійних значень або об'єктів, властивості яких залишаються незмінними.
Висновок: Підсумовуючи:
varє застарілим і не ідеальним для сучасного JavaScript.let— ваш вибір, коли змінна змінюється, але обмежена своїм блоком.constслід використовувати, коли значення змінної ніколи не змінюється.
Перекладено з: let, const, and var in JavaScript with Examples