Програми працюють шляхом маніпулювання значеннями такими як число або текст. Види значень які можна назначити та якими можна маніпулювати у мові називаються – типи.
Якщо програмі необхідно запам’ятати значення для використання його у подальшому, вона присвоює його змінній (зберігає у ній). Змінні мають імена котрі можна використовувати у програмі для посилання на значення.
Типи JS можна розділити на дві категорії: елементарні типи та об’єктні типи. До перших відносяться числа, рядки тексту та булеві значення. Крім цього є величини null та undefined. Вони відносяться до елементарних типів але не є числами, рядками чи булівським значенням. В ES6 також був доданий новий спеціалізований тип – символ (Symbol). Будь-яке інше значення, яке не є описаними попередньо являє собою об’єкт.
Об’єкт – колекція властивостей, де кожна властивість має імʼя та значення.
Звичайний об’єкт JavaScript являє собою невпорядковану колекцію значень. Крім нього в Javascript є спеціальний впорядкований, пронумерований об’єкт – масив. Масиви є об’єктами з особливою поведінкою, а сам JS включає спеціальний синтаксис для роботи з ними.
Окрім базових об’єктів та масивів, в JavaScript визначено декілька інших корисних об’єктних типів таких як: Set, Map, RegExp, Date, Error.
Об’єктні типи в JS є змінюємими, елементарні – незмінюємими. Хоча рядки тексту можна розглядати як масиви і очікувати їх змінності, на практиці це не так. Можна отримувати доступ по будь-якому індексу рядка, але не існує способів модифікації тексту існуючого рядка.
JavaScript вільно перетворює значення з одного типу в інший. Наприклад, якщо програма очікує рядок а надається число – відбудеться автоматичне перетворення. Чи якщо використовується не булеве значення де очікується булеве – JS відповідно перетворить його.
Константи та змінні дозволяють використовувати імена для посилання на значення в програмах. Константи оголошуються за допомогою const, а змінні через let, або var (у старих версіях JavaScript). Константи та змінні є нетипізованими: в оголошеннях не вказується який вид значень буде привласнюватись.