Розділ 8.Область видимості
У JS існує така річ як інтерпретатор - інструмент, який читає рядки коду по порядку. Так ось інтерпретатор бачить код по своєму :
Ось так код виглядає після компіляції:
Першочерговим здійснюється пошук усіх проініціалізованих змінних, потім пошук усіх функцій, потім вже присвоювання.
Також у JS існує такий невидимий об'єкт як Lexical Environment - суть його роботи полягає у формуванні глобального об'єкта всіх змінних та функцій:
Ми з Вами знаємо два основних види функції :
Так ось основним недоліком Function Expression є те, що ми можемо її виконати лише після знаку присвоєння, бо до цього часу Lexical Environment не має інформації про те що вона існує:
Ми з Вами для ініціалізації змінної завжди використовували var, проте існує ще два способи це зробити:
var - використовується для створення змінної, яку видно глобально:
let - використовується для створення змінної, яку видно в певних межах (як правило лише у фігурних дужках):
const - використовується для створення змінної, яку не можна змінити - називається константою і як правило назва пишеться великими буквами:
Проте якщо константою є масив чи об'єкт - то внутрішні значення можуть змінюватись:
JS код найкраще розглядати у вигляді коробок. Представимо ситуацію, що у Вас є коробка 1, а в ній коробка 2. І Ви вирішили шукати олівець у коробці 2, якщо його там не має, то пошук здійснюватиметься на рівень вище - у коробці 1 :
Чому варто використовувати let, a не var - тому, що let після того як буде не потрібна - буде видалятись з пам'яті, а отже код буде легшим та й основний недолік глобалізації даних в тому, що на них може вплинути любе середовище, а отже можуть виникати неконтрольовані зміни. Тому надалі ми в коді будемо використовувати лише let та const.
Отож ми дізнались, що існує інтерпретатор, який читає код по порядку, після компіляції формує власний код, що для контролю змінних та функцій було створено невидимий об'єкт Lexical Environment, основна задача якого тримати стан змінних і також крім var для ініціалізації можна використовувати більш точні і оптимальніші let та const. У наступному розділі ми детальніше розглянемо з Вами що ж таке об'єкт.
Last updated
Was this helpful?