Эти типы передаются по значению и являются неизменяемыми (immutable).
let integer = 42;
let float = 3.14;
let infinity = Infinity;
let nan = NaN; // Особый случай: тип number, но "Not a Number"
let name = "Alice";
let template = `Hello ${name}!`; // Шаблонные строки (ES6)
true
или false
.let isActive = true;
let isAdmin = false;
let x;
console.log(x); // undefined
typeof null
возвращает "object"
(историческая ошибка JS).let empty = null;
const id = Symbol("uniqueId");
const bigNum = 9007199254740991n;
{ key: "value" }
[1, 2, 3]
function() {}
let user = { name: "Bob", age: 30 };
let colors = ["red", "green"];
function greet() { console.log("Hi!"); }
Важно: Объекты передаются по ссылке:
let a = { value: 10 };
let b = a; // Теперь b ссылается на тот же объект
a.value = 20;
console.log(b.value); // 20
Оператор typeof
:
console.log(typeof 42); // "number"
console.log(typeof []); // "object" (а не "array")
console.log(typeof null); // "object" (исторический баг)
Метод Array.isArray()
для проверки массивов:
console.log(Array.isArray([])); // true
number
, string
, boolean
, null
, undefined
, symbol
, bigint
.object
(включая массивы, функции и др.).null
ошибочно определяется как "object"
.typeof
, instanceof
и Array.isArray()
.P.S. В TypeScript эти типы расширяются (any
, unknown
, enum
и др.), но в runtime остаются только перечисленные выше.