Загрузка...
Загрузка...
Продолжая работу с платформой, вы принимаете условия Политики конфиденциальности и использование файлов cookie.
👋 Привет! Я Дастан, автор Hack Frontend. Всегда рад профессиональному нетворкингу => добавляйся в LinkedIn.
В JavaScript все данные делятся на два типа:
Примитивы — это основные типы, встроенные в язык.
| Тип | Пример | Особенности |
|---|---|---|
string | "Hello" | Текстовая строка |
number | 42, 3.14 | Любое число (целое и с плавающей точкой) |
boolean | true, false | Истина или ложь |
null | null | Намеренное отсутствие значения |
undefined | undefined | Значение не было присвоено |
bigint | 900719925...n | Большие числа |
symbol | Symbol('id') | Уникальные идентификаторы |
let a = 10;
let b = a;
b = 20;
console.log(a); // 10
Все остальные типы — это объекты, включая:
ObjectArrayFunctionDate
И даже null считается объектом по typeof, но это баг языкаconst obj1 = { name: "Alice" };
const obj2 = obj1;
obj2.name = "Bob";
console.log(obj1.name); // "Bob" — потому что obj1 и obj2 ссылаются на один и тот же объект
| Примитивы | Объекты |
|---|---|
| Передаются по значению | Передаются по ссылке |
| Сравниваются по значению | Сравниваются по ссылке |
| Неизменяемы | Изменяемы |
typeof возвращает тип | typeof почти всегда "object" |
typeof "Hello" // "string"
typeof 42 // "number"
typeof undefined // "undefined"
typeof null // "object" (известный баг)
typeof {} // "object"
typeof [] // "object"
typeof function(){} // "function"
Важный момент:
Массивы, функции и даже null — это объекты в JavaScript. Поэтому typeof null === "object" — это не ошибка в вашем коде, а исторический баг языка.