Це питання часто викликає ступор навіть у сіньйорів, хоча насправді воно дуже просте.
Коли його чуєте, не потрібно вигадувати каруселі на кшталт: є масиви, об’єкти, функції… - бо з точки зору типів даних у JavaScript усе це належить до одного непримітивного типу - object.
Непримітивний тип: object
До object належить майже все “складне”:
{ a: 1 }- об’єкт[1, 2, 3]- масив (але тип все одно object)new Date()- дата (також object)function () {}- функція (технічно це об’єкт, алеtypeofдля неї повертаєfunction)
Примітивні типи (їх 7)
Окрім object, у JavaScript є 7 примітивних типів - вони не є об’єктами і не мають методів/властивостей як контейнери (хоча JS інколи обгортає їх у wrapper-об’єкти під капотом).
string- рядки:hellonumber- числа:42,3.14,NaN,Infinityboolean- логічний тип:true / falsenull- порожнє значення (явно задана відсутність)undefined- значення не заданеsymbol- унікальні ідентифікатори:Symbol(id)bigint- великі цілі числа:123n
Разом: 7 примітивів + 1 непримітивний тип object. Про різницю null та undefined ви можете почитати https://devs-hive.tech/interview-qa/null-vs-undefined-js.