
1. Частина, де ми говоримо про JS
1.1. Advanced functions
1.1.1. Залишкові параметри та оператор розширення
1.1.1.1. Залишкові параметри
1.1.1.1.1. Використовуються для створення нових функцій з невизначеним числом аргументів
1.1.1.1.2. Залишкові параметри завжди мають бути в кінці списку параметрів
1.1.1.2. Оператор розширення
1.1.1.2.1. З його допомогою можна вставити масив у функцію, яка працює зі звичайним списком аргументів
1.1.1.2.2. витягує окремі елементи з ітерабельної змінної/величини
1.1.1.3. Q&A
1.1.2. Замикання
1.1.2.1. LexicalEnvironment
1.1.2.1.1. У JavaScript у кожної функції, що виконується, блоку коду і скрипта є пов'язаний з ними внутрішній (прихований) об'єкт, що називається 'лексичним оточенням'. Він складається з:
1.1.2.2. То що ж таке це замикання?
1.1.2.2.1. Замикання – це функція, яка запам'ятовує свої зовнішні змінні та може отримати доступ до них. У деяких мовах це неможливо, або функція має бути написана спеціальним чином, щоб вийшло замикання. Але в JavaScript всі функції спочатку є замиканнями (є тільки один виняток - синтаксис "new Function"). Тобто вони автоматично запам'ятовують де були створені (за допомогою прихованої властивості `Enviroment`) і всі вони можуть отримати доступ до зовнішніх змінних.
1.1.2.2.2. Академічне визначення що таке 'замикання' https://uk.wikipedia.org/wiki/%D0%97%D0%B0%D0%BC%D0%B8%D0%BA%D0%B0%D0%BD%D0%BD%D1%8F_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F)
1.1.2.3. IIFE
1.1.2.4. Q&A
1.1.3. Глобальний об'єкт
1.1.3.1. надає змінні та функції, доступні в будь-якому місці програми. За замовчуванням це ті, що вбудовані в мову чи середовище виконання.
1.1.3.1.1. Зараз він називається 'globalThis', колись в різних середовищах були різні імена
1.1.3.2. В нього можна записувати, але не рекомендується
1.1.3.3. Q&A
1.1.4. Об'єкт функції
1.1.4.1. властивість 'name'
1.1.4.2. властивість 'length'
1.1.4.3. користувацькі властивості
1.1.4.3.1. це не локальні змінні
1.1.4.3.2. Їх можна використовувати замість замикання
1.1.4.4. Q&A
1.1.5. Named Function Expression (NFE)
1.1.5.1. Воно дозволяє функції посилатися на себе
1.1.5.2. Воно не доступне за межами функції
1.1.5.3. Захищає від перезаписування змінної
1.1.5.4. Не працює з Function Declaration
1.1.5.5. Q&A
2. Епілог
2.1. Екстра матеріали
2.1.1. Про оператор розширення https://www.freecodecamp.org/news/an-introduction-to-spread-syntax-in-javascript-fba39595922c/
2.1.2. Про замикання в JS: https://www.javascripttutorial.net/javascript-closure/
2.1.2.1. Ще про замикання в JS: https://www.w3schools.com/js/js_function_closures.asp
2.1.2.1.1. Замикання на прикладах: https://www.programiz.com/javascript/closure
2.1.3. Про синтаксис new Function: https://davidwalsh.name/new-function
2.2. Тизер-трейлер наступного вебінару
2.2.1. Q&A