day1 Flashcards
(15 cards)
Чи підлягає function declaration hoisting’у?
Так, повністю. Можна викликати до її оголошення.
Чи підлягає function expression hoisting’у?
Ні. Змінна створюється, але значення буде undefined до ініціалізації.
Чи має arrow function власний this?
Ні. Вона лексично захоплює this з контексту, де була оголошена.
Як function expression визначає this?
Динамічно — залежить від способу виклику (наприклад, через обʼєкт або глобально).
Чи працює call з arrow function?
Ні, контекст не змінюється, оскільки arrow function ігнорує call/bind/apply.
Чи можна використовувати arrow function як метод обʼєкта, якщо потрібен this?
Ні. Arrow function не має власного this, тому не слід її використовувати як метод.
Що робить .call()?
Викликає функцію одразу з переданим контекстом (this) і аргументами.
Що робить .bind()?
Створює нову функцію з фіксованим контекстом this.
Як працює this у function всередині setTimeout?
this буде undefined (в strict mode) або window (в sloppy mode).
Як зберегти правильний this у setTimeout?
Використати arrow-функцію або .bind(this).
Що означає, що arrow function “лексично захоплює this”?
Вона бере this з місця, де була створена, а не де викликана.
Яка різниця між function declaration і expression щодо hoisting?
Declaration піднімається цілком, а expression — ні (тільки оголошення змінної).
Як реалізувати простий customBind?
Повернути нову функцію, яка викликає оригінальну з .call(context).
Чи можна викликати функцію без втрати контексту після збереження її у змінну?
Так, якщо використати bind або вручну викликати через call/apply.
Що буде, якщо викликати arrow-функцію з .call(obj)?
Контекст не зміниться — this залишиться таким, яким був у момент оголошення.