JS об'єкт var
Загальний опис
var
— це ключове слово в JavaScript, яке використовується для оголошення змінних. На відміну від сучасних let
і const
, змінні, оголошені за допомогою var
, мають деякі особливості, які важливо враховувати.
По-перше, змінні, оголошені через var
, мають функціональну область видимості, тобто вони доступні всередині всієї функції, навіть якщо оголошені всередині блоку. Наприклад:
function example() {
if (true) {
var message = "Привіт!";
}
console.log(message); // "Привіт!" - змінна доступна поза блоком.
}
По-друге, якщо змінна оголошується через var
поза функцією, вона автоматично стає властивістю глобального об'єкта (window
у браузері):
var globalVar = 10;
console.log(window.globalVar); // 10
Ще одна особливість — підняття (hoisting). Змінні, оголошені через var
, «піднімаються» на початок своєї області видимості, хоча їх значення залишається невизначеним до моменту присвоєння:
console.log(a); // undefined
var a = 5;
Через це код може працювати неочікувано, якщо розробник не враховує підняття.
Використання var
в сучасному JavaScript поступово відходить на другий план через появу більш зрозумілих і безпечних конструкцій let
і const
. Проте знання про var
залишаються важливими для розуміння спадкових кодових баз.
Порада: | При використанні старого коду, де активно застосовується |
Порада: | Не покладайтеся на |
Порада: | Коли оголошуєте змінну глобально через |
Синтаксис
var ім’я_змінної = значення;
Переглядачі
Переглядач | |||||
---|---|---|---|---|---|
1 |
1 |
1 |
3 |
12 |
Переглядач | ||||
---|---|---|---|---|
4.4 |
18 |
4 |
1 |
Переглядач | ||
---|---|---|
0.10.0 |
1.0 |
Приклади
При натисканні кнопки "Збільшити лічильник" значення змінної counter
, оголошеної через var
, збільшується, і воно відображається на сторінці. Кнопка "Скинути" встановлює значення counter
у 0. Завдяки функціональній області видимості var
, змінна доступна в обох обробниках подій. Цей приклад демонструє, як var
може бути корисним для створення лічильників у простих сценаріях.
Завдяки підняттю змінна a
стає відомою інтерпретатору на початку функції, але до її ініціалізації значення залишається undefined
. Це важливо враховувати при налагодженні коду.
function hoistingExample() {
console.log(a); // undefined
var a = 5;
console.log(a); // 5
}
hoistingExample();
У цьому прикладі видно, як змінна x
, оголошена через var
, не має блочної області видимості, що може призводити до помилок у великих функціях.
function testVarScope() {
var x = 10;
if (true) {
var x = 20; // Перезаписує x у функціональній області
console.log(x); // 20
}
console.log(x); // 20 - значення змінилося через функціональну область
}
testVarScope();