25 лютого 2024 р.

Змінні

Найчастіше застосункам на JavaScript потрібно працювати з інформацією. Ось два приклади:

  1. Онлайн-магазин – інформацією можуть бути товари, які продаються, і вміст кошика.
  2. Застосунок для чату – інформація може включати користувачів, повідомлення та багато іншого.

Змінні використовуються для зберігання цієї інформації.

Змінна

Змінна це “іменована частинка сховища”, в якій зберігаються дані. Ми можемо використовувати змінні, щоб зберігати товари, відвідувачів та інші дані.

Щоб створити змінну, використовуйте ключове слово let.

Цей рядок нижче створить (інакше кажучи, оголосить) змінну з ім’ям “message”:

let message;

Тепер ми можемо покласти деякі дані в цю змінну, використовуючи оператор присвоєння =:

let message;

message = 'Привіт'; // збереження рядка 'Привіт' у змінній `message`

Тепер рядок збережено в частину пам’яті, яка зв’язана з цією змінною. Ми можемо отримати доступ до даних, використовуючи ім’я змінної:

let message;
message = 'Привіт!';

alert(message); // показує вміст змінної

Щоб писати менше коду, ми можемо суміщати оголошення змінної та її присвоєння в одному рядку:

let message = 'Привіт!'; // оголошення змінної і присвоєння значення

alert(message); // Привіт!

Ми також можемо оголосити декілька змінних в одному рядку:

let user = 'Іван', age = 25, message = 'Привіт';

Таке оголошення може виглядати коротшим, проте ми не рекомендуємо так писати. Заради кращої читабельності, будь ласка, оголошуйте змінні з нового рядка.

Багаторядковий спосіб трохи довший, проте його легше читати:

let user = 'Іван';
let age = 25;
let message = 'Привіт';

Деякі люди також оголошують змінні в такому багаторядковому стилі:

let user = 'Іван',
  age = 25,
  message = 'Привіт';

…або навіть у стилі “кома спочатку”:

let user = 'Іван'
  , age = 25
  , message = 'Привіт';

Технічно, всі ці способи роблять одне й те ж. Тому це питання особистого смаку та естетики.

var замість let

У старих скриптах ви можете знайти інше ключове слово: var замість let:

var message = 'Привіт';

Ключове слово var майже таке, як let. Воно теж оголошує змінну, але дещо іншим, “застарілим” способом.

Є деякі відмінності між let і var, але вони поки що не мають для нас значення. Ми дізнаємося більше про ці відмінності в розділі Застаріле ключове слово "var".

Аналогія з життя

Ми легко зрозуміємо концепцію “змінної”, якщо уявимо її у вигляді “коробки” для даних з унікальною назвою на наклейці.

Наприклад, змінну message можна уявити як коробку з написом "Повідомлення" зі значенням "Привіт!" всередині:

Ми можемо покласти будь-яке значення в цю коробку.

Ми також можемо змінювати його стільки разів, скільки захочемо:

let message;

message = 'Привіт!';

message = 'Світ!'; // значення змінено

alert(message);

Коли значення змінюється, старі дані видаляються зі змінної:

Ми також можемо оголосити дві змінні та скопіювати дані з однієї в іншу.

let hello = 'Привіт світ!';

let message;

// копіюємо 'Привіт світ' з hello в message
message = hello;

// тепер дві змінні мають однакові дані
alert(hello); // Привіт світ!
alert(message); // Привіт світ!
Оголошення змінної вдруге призведе до помилки

Оголошувати змінну можна лише один раз.

Повторне оголошення тієї ж змінної спричинить помилку:

let message = "Це";

// повторне 'let' призведе до синтаксичної помилки
let message = "Той"; // SyntaxError: 'message' has already been declared

Тому ми маємо оголосити змінну лише раз, а потім просто посилатися на неї, без let.

Функційне програмування

Цікаво зазначити, що існують функційні мови програмування, такі як Haskell, в яких заборонено змінювати значення змінних.

У таких мовах збережені в “коробку” значення залишаються там назавжди. Якщо нам потрібно зберегти щось інше, мова змусить нас створити нову коробку (оголосити нову змінну). Ми не можемо використати стару змінну.

Хоча на перший погляд це може здатися дивним, проте ці мови цілком підходять для серйозної розробки. Ба більше, є такі галузі, як от паралельні обчислення, де це обмеження дає певні переваги.

Іменування змінних

В JavaScript є два обмеження, які стосуються імен змінних:

  1. Ім’я має містити лише букви, цифри або символи $ і _.
  2. Перший символ не має бути числом.

Ось приклади допустимих імен:

let userName;
let test123;

Для написання імені, яке містить декілька слів, зазвичай використовують “верблюжий регістр” (camelCase). Тобто слова йдуть одне за одним, і кожне слово пишуть із великої букви й без пробілів: myVeryLongName. Зауважте, що перше слово пишеться з маленької букви.

Що цікаво – знак долара '$' і знак підкреслення '_' також можна використовувати в іменах. Це звичайні символи, такі ж, як і букви, без будь-якого особливого значення.

Ці імена також допустимі:

let $ = 1; // оголошено змінну з ім’ям "$"
let _ = 2; // а тепер змінна з ім’ям "_"

alert($ + _); // 3

Приклади недопустимих імен змінних:

let 1a; // не може починатися з цифри

let my-name; // дефіс '-' недопустимий в імені
Регістр має значення

Змінні з іменами apple і APPLE – це дві різні змінні.

Нелатинські букви дозволені, але не рекомендуються

Можна використовувати будь-яку мову, включно з кирилицею або навіть ієрогліфами, наприклад:

let назва = '...';
let 我 = '...';

Технічно тут немає помилки. Такі імена дозволені, проте є міжнародна традиція використовувати англійську мову в іменах змінних (наприклад, yaLyublyuUkrainu => iLoveUkraine). Навіть якщо ми пишемо маленький скрипт, у нього може бути тривале життя попереду. Можливо, людям з інших країн колись доведеться прочитати його.