Тіньові клони та змінні: let, const, var

Уявіть, що Наруто вперше намагається використовувати Техніку Тіньового Клона — він створює тисячу клонів, але половина з них розбігається в різні боки. Ось таке саме відчуття, коли ви працюєте з var у JavaScript.

pic

Цей пост — ваш перший крок до освоєння JavaScript No Jutsu: навчитися правильно оголошувати змінні, аби не допустити хаосу у вашому коді.

Змінна в програмуванні — це як сувій, в якому зберігається інформація.

let ninja = "Naruto";

Ось і все. Ви створили змінну ninja, яка містить значення "Naruto". Просто, правда? Тепер розглянемо три способи створення змінних у JavaScript і чому тільки два з них реально корисні.

Знайомство з трьома способами

var – проблемний учень

Це старий спосіб створення змінних у JavaScript. Він працює, але має свою специфіку.

var village = "Leaf";
if (true) {
var village = "Sound";
}
console.log(village); // "Sound"

Попри те, що змінна village була змінена всередині блоку if, це переписало значення і зовні. Чому? Тому що var ігнорує блокові області видимості.

var — це як перша спроба Наруто з Тіньовим Клоном: клони множаться неконтрольовано і захоплюють усе навколо (ваш код). let і const — це вдосконалені техніки: дисципліновані клони, які зникають після виконання місії (блокова область видимості).

let – сучасний стандарт

Використовуйте це, коли змінна може змінюватися.

let sensei = "Kakashi";
sensei = "Jiraiya"; // абсолютно нормально

Ось чому let кращий за var: він враховує блокові області видимості, тому змінні залишаються в межах блоку.

let team = "Team 7";
if (true) {
let team = "Team 10";
console.log(team); // "Team 10"
}
console.log(team); // "Team 7"

З набагато кращим контролем ваші клони залишаються у межах місії.

pic

const — заблокована змінна

Використовуйте це, коли значення змінної не повинно змінюватися.

const village = "Leaf";
village = "Mist"; // виникає помилка

Але є нюанс: const не заморожує вміст змінної, а лише саму змінну.

const team = ["Naruto", "Sakura"];
team.push("Sasuke"); // працює нормально
console.log(team); // ["Naruto", "Sakura", "Sasuke"]

Отже, const не означає заморожену змінну. Це означає, що ви не можете змінити саму змінну, але можете змінювати вміст.

Яку з них використовувати?

Чесно кажучи:

  • Використовуйте const за замовчуванням.
  • Використовуйте let тільки, коли потрібно змінювати значення.
  • Уникайте var, якщо тільки ви не виправляєте старий код.

Швидке завдання

Що виведе цей код?

const jutsu = ["Rasengan"];
jutsu.push("Shadow Clone");
console.log(jutsu);

Відповідь: ["Rasengan", "Shadow Clone"]

Так, масиви, створені за допомогою const, можна модифікувати.

Підсумок

Тепер ви знаєте, як правильно оголошувати змінні та уникати хаосу з var. Відмінна робота!

Перекладено з: Shadow Clones & Variables: let, const, var