Змінні і типи
Змінні використовуються для зберігання даних і складаються із ідентифікатора (імені) і області в пам'яті, де зберігається їх значення. Змінну можна уявити у вигляді коробки з назвою, в якій щось лежить (значення).
<ключове_слово> <ім`я_змінної> = <значення>
Імена змінних
Ідентифікатор - це ім'я змінної, функції або класу. Складається з одного або декількох символів у наступному форматі.
- Першим символом повинна бути літера
a-z
абоA-Z
, символ підкреслення_
або знак долара$
. - Інші символи можуть бути літерами
a-z
,A-Z
, цифрами0-9
, підкресленнями_
і знаками долара$
. - Ідентифікатори чуттєві до регістру. Це означає, що змінні
user
,usEr
іUser
- різні.
Ім'я змінної повинно бути зрозумілим.
# ❌ Погано
chislo
korzina_tovarov
profil_polzovatelya
tekushiy_mesyaz
# ✅ Добре
number
cart
userProfile
currentMonth
Використання camelCase-нотації для ідентифікаторів - це стандарт. Перше слово пишеться малими літерами, а кожне наступне починається з великої. Наприклад, user
, greetUser
, getUserData
, isActive
, activeGuestCount
,
totalWorkerSalary
.
Ключові слова
Існує список зарезервованих ключових слів, які мають спеціальне значення і використовуються для певних конструкцій. Забороняється використовувати ключові слова у якості ідентифікаторів.
abstract | arguments | await | boolean |
break | byte | case | catch |
char | class | const | continue |
debugger | default | delete | do |
double | else | enum | eval |
export | extends | false | final |
finally | float | for | function |
goto | if | implements | import |
in | instanceof | int | interface |
let | long | native | new |
null | package | private | protected |
public | return | short | static |
super | switch | synchronized | this |
throw | throws | transient | true |
try | typeof | var | void |
volatile | while | with | yield |
Оголошення змінних
Оголошення змінної починається з ключового слова const
. Така змінна повинна бути одразу ініціалізована значенням, після чого її не можна перевизначити.
// Змінні, оголошені як const, обов'язково повинні бути ініціалізовані
// значенням під час оголошення, інакше виникне помилка.
const yearOfBirth = 2006;
console.log(yearOfBirth); // 2006
// Якщо зміна оголошена як const, перезаписати її значення не можна.
// При спробі присвоїти нове значення, виникне помилка виконання скрипту.
yearOfBirth = 2020; // ❌ Неправильно, виникне помилка
Для того, щоб оголосити змінну, якій у подальшому можна буде присвоїти нове значення, використовується ключове слово let
.
// Змінним, оголошеним через let, не обов'язково одразу присвоювати значення.
let age;
// Якщо змінній, оголошеній як let, не було присвоєно значення,
// вона ініціалізується спеціальним значенням undefined (не визначено).
console.log(age); // undefined
// console.log() - це метод для виведення даних у консоль браузера,
// пізніше познайомимось з ним детальніше.
// Якщо змінна оголошена як let, її значення можна перезаписати.
age = 14;
console.log(age); // 14
Оголошення змінної без ключового слова let
або const
призведе до помилки,
якщо скрипт виконується в суворому режимі.
Коли використовувати const
і let
Єдина відмінність const
і let
полягає у тому, що const
забороняє повторно присвоювати змінній будь-яке значення. Оголошення const
робить код читабельнішим, тому що змінна завжди посилається на одне і те саме зачення. У випадку з let
такої впевненості немає.
Буде розумно використовувати let
і const
наступним чином:
- Використовуйте
const
за замовчуванням, більшість змінних будуть оголошені саме таким чином. - Використовуйте
let
, якщо необхідно присвоїти змінній інше значення під час виконання скрипту.
константи і КОНСТАНТИ
Імена КОНСТАНТ - змінних, значення яких не змінюється ніколи впродовж роботи всього скрипту, як правило, записуються у форматі
UPPER_SNAKE_CASE
.
// Константа, що зберігає значення кольору
const COLOR_TEAL = "#009688";
// Константа, що зберігає повідомлення про результат логіну
const LOGIN_SUCCESS_MESSAGE = "Ласкаво просимо!";
Абсолютна більшість змінних – константи в іншому сенсі, вони просто не змінюють значення після присвоєння. Але, у різних запусках скрипту, це значення може бути різним. Імена таких змінних записують за допомогою формату camelCase
.
Звернення до змінної
Важливо розрізняти невизначені і неоголошені змінні.
Невизначена (undefined) - це змінна, яка була оголошена ключовим словом let
, але не ініціалізована значенням. За замовчуванням їй присвоюється початкове значення undefined
.
let username;
console.log(username); // undefined
Неоголошена (undeclared або not defined) - це змінна, яка не була оголошена в доступній області видимості. Спроба звернутися до змінної до її оголошення призведе до помилки. Наприклад, щоб прочитати або змінити її значення.
// ❌ Неправильно, буде помилка
age = 15; // ReferenceError: Cannot access 'age' before initialization
console.log(age); // ReferenceError: age is not defined
// Оголошення змінної age
let age = 20;
// ✅ Правильно, звертаємось після оголошення
age = 25;
console.log(age); // 25
Примітивні типи
В JavaScript змінна не асоціюється з будь-яким типом даних, тип має її значення. Тобто змінна може зберігати значення різних типів.
Number - цілі числа і числа з плаваючою комою (крапкою).
const age = 20;
const points = 15.8;
String - рядки, послідовність з нуля або більше символів. Рядок починається і закінчується одинарними '
, або подвійними лапками "
.
const username = "Mango";
const description = "JavaSript для початківців";
Boolean - логічний тип даних, прапорці стану. Всього два значення: true
і false
. Наприклад, на запитання чи увімкнено світло в кімнаті, можна відповісти так (true) або ні (false).
true
— так, вірно, істина, 1false
— ні, невірно, неправда, 0
Зверніть увагу на імена змінних, що містять буль. Вони ставлять запитання, і відповідь на нього - так або ні.
const isLoggedIn = true;
const canMerge = false;
const hasChildren = true;
const isModalOpen = false;
null - особливе значення, яке по суті означає ніщо
. Використовується в тих ситуаціях, коли необхідно явно вказати порожнечу. Наприклад, якщо користувач нічого не вибрав, то можна сказати що значення null
.
let selectedProduct = null;
undefined - ще одне спеціальне значення. За замовчуванням, коли змінна оголошується, але не ініціалізується, її значення не визначено, їй присвоюється
undefined
.
let username;
console.log(username); // undefined
Оператор typeof
Використовується для отримання типу значення змінної. Повертає на місце свого виклику тип значення змінної, вказаного після нього - рядок, в якому вказано тип.
let username;
console.log(typeof username); // "undefined"
let inputValue = null;
console.log(typeof inputValue); // "object"
const quantity = 17;
console.log(typeof quantity); // "number"
const message = "JavaScript is awesome!";
console.log(typeof message); // "string"
const isSidebarOpen = false;
console.log(typeof isSidebarOpen); // "boolean"