JS CORE Flashcards
(48 cards)
Які існують типи даних у JS?
Примітивні: string, number, symbol, boolean, null, undefined, bigint
Непримітивний: object
Як перевірити, чи об’єкт є масивом?
Array.isArray()
Як перевірити, чи число є скінченним?
isFinite(number)
Як перевірити, що змінна рівна NaN?
isNaN(variable)
Чим відрізняється поведінка isNaN() та Number.isNaN()?
Перше конвертує, друге ні
Порівняйте ключові слова var, let, const.
Порівняйте ключові слова var, let, const.
Що таке область видимості?
Область яка говорить про те де можна використати змінну
Що таке деструктуризація?
Процес розгортання масиву, або об’єкту з можливістю присвоєння до змінних
Для чого призначені методи setTimeout і setInterval?
Викликає ф-цію після затримки. setTimeout - викликає один раз, і setInterval - викликає інтервально
Порівняйте підходи роботи з асинхронним кодом: callbacks vs promises vs async/await.
Callback - функція, передана як аргумент іншій функції, для виконання пізніше.
Promise - об’єкт, який представляє результат асинхронної операції, яка може бути виконана або відхилена.
Async/await - синтаксис для роботи з promises, що робить асинхронний код схожим на синхронний.
Назвіть методи масивів, які пам’ятаєте, і скажіть, для чого вони потрібні.
push, pop, shift, unshift, slice, forEach
Які перебираючі методи масиву знаєте? У чому їхня відмінність?
map, filter, reduce, some, any
Map повертає новий масив значень
Filter порівнює значення і якщо тру повертає новий масив
Reduce повертає акамульоване значення
Some перевіряє чи є значення
Опишіть призначення і принципи роботи з колекціями Map і Set.
Map – це колекція ключ/значення, як і Object. Але основна відмінність полягає в тому, що Map дозволяє мати ключі будь-якого типу.
Set - це list унікальних значчень
Що означає глибока (deep) та поверхнева (shallow) копія об’єкта? Як зробити кожну з них?
Deep cloning - cтворює копію об’єкта та всіх вкладених об’єктів. stringify and then parse
Shallow cloning - створює копію об’єкта, але не копіює його вкладені об’єкти. (Object.assign({}, obj)
Який буде результат виконання коду?
let firstObj = { name: ‘Hello’ };
let secondObj = firstObj;
firstObj = { name: ‘Bye’ };
console.log(secondObj.name);
Hello
Що таке temporal dead zone?
Зона між початком block scope до ініціалізації змінної
Як працює boxing / unboxing у JavaScript?
Процес обгортання примітивного значення в об’єкт. Щоб unbox треба використовувати valueOf
У чому різниця між оператором in і методом hasOwnProperty?
in: Перевіряє, чи є властивість в об’єкті або його прототипі.
hasOwnProperty: Перевіряє, чи є властивість без урахування прототипу.
Опишіть, за допомогою чого в JS реалізуються такі ООП-парадигми, як інкапсуляція, поліморфізм, абстракція?
Наслідування: за допомогою прототипного наслідування. Кожний об’єкт має прототип, який може бути іншим об’єктом чи null
Інкапсуляція: за допомогою замикань та областей видимості
Поліморфізм: створення різних наслідуючих класів з одним і тим самим методом, але різними визначеннями цього методу
Абстракція: за допомогою класів (функцій контруктор)
Що таке прототип? Як працює прототипне наслідування в JS?
Усі об’єкти JavaScript успадковують властивості та методи від прототипу
Кожен об’єкт має __proto__. Лише функції та класи мають prototype
__proto__ відноситься до prototype об’єкта (функції/класу), з якого його було створено
Яка різниця між композицією та наслідуванням?
Композиція досягається вкладенням одного обєкту класу в інший. Наслідування створює новий клас на основі іншого
Чому не варто використовувати конструктори типу new String?
Створюэться об’єкт, а не примітив, тобто наприклад при поріняні буде видавати false
Принципи ооп
Інкапсуляція - можливість ховати непотрібну інформацію і імплементацію в контрольований спосіб. Розділяючи внутрішній інтерфейс від зовнішнього
Поліморфізм - використання методів з однаковою назвою, перезавантаження, інтерфейси
Абстракція - визначення спільного інтерфейсу, ігноруючи конкретні деталі реалізації
Наслідування - створення нового класу на основі іншого класу. Новий клас успадковує методи та властивості базового класу, та може розширювати його.
Чому typeof null повертає object?
Істориччна помилка. Мітка типу даних вказувала на 000 - object